171 votes

MySQL ou MySQLi en utilisant PHP

Qu'est-ce qui est le mieux, MySQL ou MySQLi ? Et pourquoi ? Lequel dois-je utiliser ?

Je veux dire meilleur non seulement en termes de performances, mais aussi de toute autre caractéristique pertinente.

114voto

Mark Davidson Points 2729

Si vous jetez un coup d'œil à Aperçu de l'extension MySQL Improved il devrait vous dire tout ce que vous avez besoin de savoir sur les différences entre les deux.

Les principales caractéristiques utiles sont les suivantes :

  • une interface orientée objet
  • soutien aux déclarations préparées
  • prise en charge des déclarations multiples
  • soutien aux transactions
  • des capacités de débogage améliorées
  • support des serveurs embarqués.

1 votes

Oui, la meilleure chose est que mysqli supporte les instructions préparées.

8 votes

Il convient également de noter que MySQLi ne fonctionne qu'avec MySQL 5+. Cela n'est plus vraiment pertinent aujourd'hui, mais lorsque MySQLi est sorti, MySQL 4 était encore la norme. C'est en partie la raison pour laquelle les extensions sont séparées, l'ancien pilote MySQL restant là pour des raisons de compatibilité.

8 votes

Il convient de noter que les choses ont beaucoup changé en six ans. mysql_*() est maintenant déprécié et seront supprimés bientôt. Vous ne devriez pas l'utiliser pour un nouveau code.

71voto

Gordon Points 156415

Il existe une page de manuel consacrée à l'aide au choix entre mysql, mysqli et PDO à l'adresse suivante

L'équipe PHP recommande mysqli ou PDO_MySQL pour les nouveaux développements :

Il est recommandé d'utiliser les extensions mysqli ou PDO_MySQL. Il n'est pas recommandé d'utiliser l'ancienne extension mysql pour les nouveaux développements. Une matrice détaillée de comparaison des fonctionnalités est fournie ci-dessous. Les performances globales des trois extensions sont considérées comme étant à peu près les mêmes. Bien que les performances de l'extension ne contribuent qu'à une fraction du temps d'exécution total d'une requête web PHP. Souvent, l'impact est aussi faible que 0,1%.

La page contient également une matrice de fonctionnalités comparant les API d'extension. Les principales différences entre les API mysqli et mysql sont les suivantes :

                               mysqli     mysql
Development Status             Active     Maintenance only
Lifecycle                      Active     Long Term Deprecation Announced*
Recommended                    Yes        No
OOP API                        Yes        No
Asynchronous Queries           Yes        No
Server-Side Prep. Statements   Yes        No
Stored Procedures              Yes        No
Multiple Statements            Yes        No
Transactions                   Yes        No
MySQL 5.1+ functionality       Yes        No

* <a href="http://news.php.net/php.internals/53799" rel="noreferrer">http://news.php.net/php.internals/53799</a>

Il existe une matrice de fonctionnalités supplémentaires comparant les bibliothèques (new mysqlnd versus libmysql) à l'adresse suivante

et un article de blog très complet à

15voto

cletus Points 276888

J'ai abandonné l'utilisation de mysqli. Il est tout simplement trop instable. J'ai des requêtes qui plantent PHP en utilisant mysqli mais qui fonctionnent très bien avec le paquet mysql. Voir aussi mysqli se plante sur les colonnes LONGTEXT . Ce bogue a été soulevé sous différentes formes depuis au moins 2005. et reste brisé . J'aimerais vraiment utiliser des instructions préparées mais mysqli n'est pas assez fiable (et personne ne semble se soucier de le corriger). Si vous voulez vraiment des instructions préparées, utilisez PDO.

2 votes

PDO n'est pas exactement parfait non plus (j'ai rencontré quelques problèmes avec lui), mais il a au moins une base d'utilisateurs plus large, donc c'est probablement un pari plus sûr.

0 votes

@troelskn, alors le mysql normal n'est-il pas simplement meilleur ?

0 votes

@Pacerier Considérant que c'est déprécié, je dirais non. En général, il semble que PDO soit devenu le choix standard.

13voto

Ross Points 19037

MySQLi est l'acronyme de MySQL improved. Il s'agit d'une interface orientée objet pour les liaisons MySQL, qui rend les choses plus faciles à utiliser. Elle offre également un support pour les instructions préparées (qui sont très utile). Si vous êtes en PHP 5, utilisez MySQLi.

5voto

MarkR Points 37178

Ce qui est mieux, c'est PDO ; c'est une interface moins crufty et fournit également les mêmes fonctionnalités que MySQLi.

L'utilisation d'instructions préparées est une bonne chose car elle élimine les possibilités d'injection SQL ; l'utilisation d'instructions préparées côté serveur est mauvaise car elle augmente le nombre d'allers-retours.

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