128 votes

Quelle est la différence entre MySQL, MySQLi et PDO ?

Quelle est la différence entre MySQL, MySQLi et AOP ?

Lequel est le mieux adapté à l'utilisation de PHP-MySQL ?

101voto

Matthew Flaschen Points 131723

Il existe (plus de) trois façons populaires d'utiliser MySQL à partir de PHP. Voici quelques caractéristiques/différences PHP : Choisir une API :

  1. ( DÉCRYPTÉ ) Le fonctions mysql sont procédurales et utilisent un échappement manuel.
  2. MySQLi est un remplacement des fonctions mysql, avec des versions orientées objet et procédurales. Il supporte les instructions préparées.
  3. AOP (PHP Data Objects) est une couche d'abstraction de base de données générale qui prend en charge MySQL parmi de nombreuses autres bases de données. Il fournit des instructions préparées, et une flexibilité significative dans la façon dont les données sont retournées.

Je recommande l'utilisation de PDO avec des déclarations préparées. Il s'agit d'une API bien conçue qui vous permettra de passer plus facilement à une autre base de données (y compris à une base qui prend en charge ODBC ) si nécessaire.

9 votes

Il y a souvent une confusion sur le fait que pour le procédural il faut utiliser les fonctions mysql_*() alors que pour l'OO il faut utiliser mysqli ! Le fait est que mysqli a complètement remplacé la première implémentation de mysql (PHP 4). Il est possible d'utiliser à la fois le style procédural et le style OO avec mysqli.

0 votes

@Patrick, merci. J'ai corrigé cela.

46voto

RageZ Points 15212

Ce sont des API différentes pour accéder à un backend MySQL

  • Le site mysql est l'API historique
  • Le site mysqli est une nouvelle version de l'API historique. Elle devrait être plus performante et offrir un meilleur ensemble de fonctions. En outre, l'API est orientée objet.
  • PDO_MySQL est le MySQL de PDO. PDO a été introduit en PHP, et le projet vise à faire une API commune pour l'accès à toutes les bases de données, donc en théorie vous devriez être capable de migrer entre les RDMS sans changer aucun code (si vous n'utilisez pas de fonction RDBM spécifique dans vos requêtes), également orienté objet.

Cela dépend donc du type de code que vous voulez produire. Si vous préférez les couches orientées objet ou les fonctions simples...

Mon conseil serait le suivant

  1. AOP
  2. MySQLi
  3. mysql

J'ai aussi le sentiment que l'API mysql sera probablement supprimée dans les prochaines versions de PHP .

3 votes

Ce n'est plus un sentiment : PHP7 a supprimé l'API mysql, laissant PDO et mysqli

7voto

Elzo Valugi Points 10906

Il existe un tableau en comparant les 3 fonctionnalités de l'API. Utilisez Mysqli autant que possible, car c'est la dernière version lancée après PDO et elle est et sera mieux maintenue à l'avenir.

3voto

Sarfraz Points 168484

mysqli est la version améliorée de mysql.

Extension PDO définit une interface légère et cohérente pour accéder aux bases de données en PHP. Chaque pilote de base de données qui implémente l'interface PDO peut exposer des fonctionnalités spécifiques aux bases de données comme des fonctions d'extension régulières.

4 votes

copier à partir du fichier manuel n'est pas très utile.

3voto

Plus précisément, l'extension MySQLi offre les avantages extrêmement utiles suivants par rapport à l'ancienne extension MySQL

Interface OOP (en plus de l'interface procédurale) Support des déclarations préparées Support des transactions et des procédures stockées Syntaxe plus agréable Amélioration de la vitesse Débogage amélioré

Extension PDO

L'extension PHP Data Objects est une couche d'abstraction de base de données. Plus précisément, il ne s'agit pas d'une interface MySQL, car elle fournit des pilotes pour de nombreux moteurs de bases de données (dont bien sûr MySQL).

PDO vise à fournir une API cohérente, ce qui signifie que lorsqu'un moteur de base de données est modifié, les changements de code pour refléter cela devraient être minimes. En utilisant PDO, votre code fonctionnera normalement sur de nombreux moteurs de base de données, simplement en changeant le pilote que vous utilisez.

En plus d'être compatible entre les bases de données, PDO prend également en charge les instructions préparées, les procédures stockées et bien d'autres choses encore, tout en utilisant le pilote MySQL.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X