web-dev-qa-db-fra.com

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

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

Lequel est le mieux adapté pour utiliser PHP-MySQL?

123
Chintan Parekh

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

  1. ( [~ # ~] obsolète [~ # ~] ) Les fonctions mysql sont procédurales et utilisent l'échappement manuel.
  2. MySQLi remplace les fonctions mysql, avec des versions procédurales et orientées objet. Il prend en charge les déclarations préparées.
  3. PDO (Objets de données PHP) est une couche d'abstraction de base de données générale prenant en charge MySQL parmi de nombreuses autres bases de données. Il fournit des instructions préparées et une flexibilité importante dans la manière dont les données sont renvoyées.

Je recommanderais d'utiliser AOP avec des instructions préparées. C'est une API bien conçue qui vous permettra plus facilement de passer à une autre base de données (y compris celles prenant en charge ODBC ) si nécessaire.

94
Matthew Flaschen

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

  • Le mysql est l'API historique
  • mysqli est une nouvelle version de l'historique API. Il devrait mieux fonctionner et avoir un meilleur ensemble de fonctions. En outre, l'API est orientée objet.
  • PDO_MySQL , est le MySQL pour PDO. PDO a été introduit en PHP, et le projet vise à créer une API commune pour tous les accès aux bases de données. En théorie, vous devriez donc pouvoir migrer d'un RDMS à l'autre sans modifier le code (si vous n'utilisez pas une 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 calques orientés objet ou les fonctions simples ...

Mon conseil serait

  1. AOP
  2. MySQLi
  3. mysql

Je pense aussi que l'API mysql serait probablement supprimée dans les prochaines versions de PHP.

42
RageZ

Il y a un table comparant les 3 fonctionnalités de l'API. Utilisez Mysqli autant que possible, comme c'est le cas pour la dernière version lancée après PDO. Elle sera et sera mieux maintenue à l'avenir.

7
Elzo Valugi

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 à la base de données en tant que fonctions d'extension standard.

3
Sarfraz

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

Interface POO (en plus de la procédure) Prise en charge des instructions préparées Transaction + prise en charge des procédures stockées Amélioration de la syntaxe plus simple Amélioration du débogage

Extension AOP

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 base de données (y compris MYSQL).

PDO vise à fournir une API cohérente qui signifie que lorsqu'un code de moteur est modifié, les modifications de code reflétant cette modification doivent être minimales. Lorsque vous utilisez PDO, votre code "ne fonctionne que" sur de nombreux moteurs de base de données, simplement en modifiant le pilote que vous utilisez.

En plus d'être compatible avec plusieurs bases de données, PDO prend également en charge les instructions préparées, les procédures stockées, etc., tout en utilisant le pilote MySQL.

3
user1776226