Quel est le meilleur, MySQL ou MySQLi? Et pourquoi? Lequel dois-je utiliser?
Je veux dire mieux non seulement en termes de performances, mais de toute autre fonctionnalité pertinente.
Quel est le meilleur, MySQL ou MySQLi? Et pourquoi? Lequel dois-je utiliser?
Je veux dire mieux non seulement en termes de performances, mais de toute autre fonctionnalité pertinente.
Réponses:
Si vous jetez un œil à MySQL Improved Extension Overview , il devrait vous dire tout ce que vous devez savoir sur les différences entre les deux.
Les principales fonctionnalités utiles sont:
mysql_*()
est désormais obsolète et sera bientôt supprimé . Vous ne devriez pas l'utiliser pour un nouveau code.
Il existe une page de manuel dédiée pour vous aider à choisir entre mysql, mysqli et PDO sur
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 un nouveau développement. Une matrice de comparaison des fonctionnalités détaillée est fournie ci-dessous. Les performances globales des trois extensions sont considérées comme étant à peu près identiques. 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 dispose également d'une matrice de fonctionnalités comparant les API d'extension. Les principales différences entre mysqli et mysql API 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
* http://news.php.net/php.internals/53799
Il existe une matrice de fonctionnalités supplémentaire comparant les bibliothèques (nouveau mysqlnd versus libmysql) à
et un article de blog très complet sur
J'ai abandonné l'utilisation de mysqli. C'est tout simplement trop instable. J'ai eu des requêtes qui plantent PHP en utilisant mysqli mais fonctionnent très bien avec le package mysql. Aussi mysqli se bloque sur les colonnes LONGTEXT . Ce bogue a été soulevé sous diverses formes depuis au moins 2005 et reste cassé . Je voudrais honnêtement utiliser des déclarations préparées, mais mysqli n'est tout simplement pas assez fiable (et personne ne semble se soucier de le réparer). Si vous voulez vraiment des déclarations préparées, optez pour PDO.
Ce qui est mieux, c'est l'AOP; c'est une interface moins cruelle et fournit également les mêmes fonctionnalités que MySQLi.
L'utilisation d'instructions préparées est bonne 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'aller-retour.
pour moi, les déclarations préparées sont une fonctionnalité incontournable. plus exactement, la liaison de paramètres (qui ne fonctionne que sur les instructions préparées). c'est la seule manière vraiment sensée d'insérer des chaînes dans des commandes SQL. Je ne fais vraiment pas confiance aux fonctions «échapper». la connexion DB est un protocole binaire, pourquoi utiliser un sous-protocole limité en ASCII pour les paramètres?