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.
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:
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:
* 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
la source
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.
la source
MySQLi signifie MySQL amélioré. C'est une interface orientée objet vers les liaisons MySQL qui rend les choses plus faciles à utiliser. Il offre également un support pour les instructions préparées (qui sont très utiles). Si vous utilisez PHP 5, utilisez MySQLi.
la source
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.
la source
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?
la source