IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

PDO vs MySQLI [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 255
    Par défaut PDO vs MySQLI
    Bonjour,

    Je vais avoir un petit projet PHP à faire. J'ai déjà fait un peu de PHP mais il y a un moment, à l'époque de mysql_connect et cie.

    Comme je sais que mysql_connect est déprécié, je dois me tourner vers PDO ou MySQLI. Lequel me conseilleriez-vous ? (avantages/inconvénients des deux).

    Et du coup, ou faut-il faire gaffe niveau sécurité ? (injection SQL, protections des variables de session).

    Merci pour vos retours.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    En mon sens, mysqli existe essentiellement pour remplacer l'api mysql dans des applis existantes. Donc si tu démarres une nouvelle application, mieux vaut utiliser directement PDO.
    Je trouve la structure des fonctions et surtout le passage de paramètres aux requêtes préparées beaucoup plus intuitif avec PDO qu'avec mysqli : le fait de pouvoir envoyer un tableau de paramètres à la fonction execute sans passer par trouze-mille fonctions bindParam ou bindValue est hautement appréciable.

    Au niveau sécurité et notamment injections SQL, le principe de base reste valable : on ne met jamais des valeurs en provenance de l'extérieur directement dans une requête.
    Avec mysqli, il ya la fonction mysqli_real_escape_string, équivalent de mysql_escape_string. Mais surtout il y a les requêtes préparées : tu mets des marque-places à la place des valeurs de paramètres, tu passes les paramètres à l'exécution et pouf! PDO (ou mysqli) se charge de faire les échappements pour toi.

    Evidemment, le but originel des requêtes préparées est de pouvoir ré-exécuter la même requête avec des valeurs différentes (très pratique pour les insertions en masses), mais ça sert beaucoup pour gérer les échappements.

    A lire sur le sujet : Comprendre PDO, avec de jolis extraits de code qui compare l'ancienne syntaxe mysql, PDO et mysqli.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Pour la comparaison de fonctionnalité, tu peux voir ici: http://php.net/manual/fr/mysqlinfo.api.choosing.php

    A+.

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Salut,

    Je confirme tous les points évoqués par Celira en ajoutant qu'en plus d'être beaucoup plus pratique - la possibilité de passer un tableau dans la fonction execute() est un avantage considérable - PDO est aussi beaucoup plus agréable à écrire : fini les noms de fonctions à rallonge. Donc y'a pas vraiment de question à se poser, mysqli est pratique pour mettre à jour un ancien site, mais pour les nouveaux c'est PDO sans hésitation. Plus facile aussi pour changer de sgbdd si besoin et tous les nouveaux exemples de codes sur le web sont maintenant écrits avec PDO donc bon y'a pas photo. Niveau expérience, j'ai utilisé les deux et jamais je ne reviendrai vers mysli tant que j'ai le choix.

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    Plus facile aussi pour changer de sgbdd si besoin
    à condition de ne pas utiliser de syntaxe spécifique dans les requêtes.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Citation Envoyé par Celira Voir le message
    à condition de ne pas utiliser de syntaxe spécifique dans les requêtes.
    Dans ce cas effectivement le code sera entièrement compatible sans besoin de faire quasiment aucune modification. Mais même sans cette condition, il n'y aurait que ces requêtes spécifiques à réécrire, alors qu'avec mysqli il faudrait réécrire tout le code. Pour dire que dans tous les cas PDO facilite les migrations

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] MySqli vers Pdo
    Par okoweb dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/05/2010, 21h08
  2. [MySQL] Avis entre PDO et MYSQLI
    Par saebakun dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/12/2008, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo