MySQL Vs. MySQLi de PHP

MySQL Vs. MySQLi de PHP.

Structure orientée objet

MySQLi fournit un ensemble de fonctions pour une structure de code avec un style procédural afin de faciliter la transition MySQL. Cependant, il fournit également des fonctionnalités via un ensemble de classes orientées objet. L'utilisation d'un style orienté objet peut rendre l'intégration MySQL mieux adaptée aux fonctionnalités orientées objet de PHP version 5 et élimine souvent la nécessité de créer des variables supplémentaires pour prendre en charge les opérations et tâches MySQL. Par exemple, ce qui suit montre le code permettant de se connecter à un serveur de base de données et d’ouvrir une base de données dans MySQL et MySQLi: MySQL: $ dbc = mysql_connect ("localhost", "user", "password"); $ db = mysql_select_database ("base de données");

MySQLi: $ db = new mysqli ("localhost", "utilisateur", "mot de passe", "base de données");

Instructions préparées

Peut-être que la plus grande différence entre MySQL et MySQLi est le support de ce dernier pour les instructions préparées. Avec MySQL, vous devez faire particulièrement attention à utiliser l'instruction d'échappement dans chaque chaîne utilisée dans une requête pour empêcher les attaques par injection SQL. Avec MySQLi et les instructions préparées, vous pouvez lier des ensembles de paramètres à une requête et faire correspondre cette dernière aux différentes valeurs que vous souhaitez utiliser dans la requête. MySQLi est chargé de veiller à ce que l'instruction d'échappement soit utilisée correctement dans tout le code avant son application dans la base de données. Par exemple, le code suivant insère deux enregistrements dans une table MySQL à l'aide de MySQLi:

$ stmt = $ db-> prepare ("INSERT INTO PEOPLE (Nom complet, Email), valeurs (?, ?); $ stmt-> bind_param (" ss ", $ fullname, $ email); $ fullname =" John Johnson "; $ email = "[email protected]"; $ stmt-> execute (); $ nom complet = "Mary Johnson"; $ email = "[email protected]"; $ stmt-> execute (); $ stmt-> fermer ();

Amélioration de l'efficacité

En raison des instructions préparées et d’autres améliorations d’efficacité, l’extension MySQL devrait fonctionner plus rapidement que les instructions équivalentes. Comme vous pouvez le constater dans l'exemple précédent utilisant des instructions préparées, la surcharge d'un insert n'est requise qu'une seule fois, lorsque l'instruction est préparée. Avec une instruction insert équivalente dans MySQL, la surcharge d'insertion devra être répétée à chaque requête sur la base de données.

Transactions

MySQLi fournit des fonctionnalités supplémentaires sous la forme de transactions. Avec l'extension MySQLi, vous pouvez regrouper un ensemble d'opérations de données dans une transaction et les exécuter en une seule transaction. Si une opération de transaction échoue, toute l'opération échoue et toutes les modifications apportées sont annulées. Par exemple, vous pouvez utiliser une transaction lors de la planification d'un transfert d'argent entre deux comptes car, sauf si les deux côtés de l'opération réussissent, l'opération échoue et que vous ne souhaitez pas laisser un état dans lequel un compte a été débité. mais l'autre n'a pas été accrédité.