MySQLi ou PDO – Quoi utiliser pour son MySQL en PHP ?

MySQLi ou PDO ? Quoi choisir ?

L’utilisation d’une base de données pour un site internet ou une application web est quasiment indispensable lorsqu’on veut retenir des informations. PHP nous donne plusieurs moyen pour pouvoir accéder à une base de données et faire toutes les manipulations qu’on souhaite dessus via des API. Mais quelle est la différence entre tous les API que PHP propose et surtout … quoi utiliser ? Voici une petite comparaison entre les deux API !

Il existe plusieurs bases de données qui peuvent être utilisées par PHP, et autant d’API qui permettent d’interagir avec elles. On va se concentrer sur MySQL qui est la base de données la plus utilisée.

Les 3 API pour MySQL en PHP sont :

  • L’API mysql avec toutes les fonctions commençant par mysql_*
  • L’API mysqli avec toutes les fonctions commençant par mysqli_* ou l’utilisation de la classe mysqli
  • L’API PDO avec l’utilisation de la classe PDO

Quoi choisir ?

Pour commencer, on n’utilise plus l’API mysql qui est devenu obsolète. Il n’est plus mis à jour, ne gère pas les dernières fonctionnalités de MySQL et pourrait présenter des failles de sécurité. Il n’existe même plus dans la version 7.0 de PHP ! La comparaison va donc se jouer sur les deux API  suivantes.

mysqli

mysqli est l’API qui remplace mysql et fait tout en mieux. D’ailleurs, le « i » à la fin veut dire improved, c’est la version améliorée de l’API mysql ! mysqli est spécialement fait pour la base de données MySQL (tout comme l’API mysql qu’elle remplace), ce qui veut dire qu’il est plus rapide que le PDO. Il est d’ailleurs possible d’utiliser toutes les fonctionnalités avancées de MySQL comme les requêtes asynchrones, chose que PDO ne fait pas.

De plus, il peut être utilisé aussi bien de manière procédurale qu’en orientée objet alors que pour le PDO, il ne peut être utilisé qu’en orienté objet. Cela peut être pratique si vous ne maitrisez pas encore la POO.

Style procédurale :

<?php

$bdd = mysqli_connect('serveur', 'utilisateur', 'motdepasse', 'basededonnes');

$resultat = mysqli_query($bdd, 'SELECT * FROM table');

echo 'Il y a '. mysqli_num_rows($result) . ' entrée(s) dans la base de données : </br>';

while($donnees = mysqli_fetch_assoc($resultat)){
	echo $donnees['id'] . ' '.$donnees['message'].'</br>';
}

Style orienté objet :

<?php

$bdd = new mysqli('serveur', 'utilisateur', 'motdepasse', 'basededonnes');

$resultat = $bdd->query('SELECT * FROM table');

echo 'Il y a '. $bdd->num_rows($result) . ' entrée(s) dans la base de données : </br>';

while($donnees = $bdd->fetch_assoc($resultat)){
	echo $donnees['id'] . ' '.$donnees['message'].'</br>';
}

Et c’est tout !

PDO

Maintenant, passons à PDO ! PDO est une API qui peut être utilisée sur tout type de base de données, elle n’est pas qu’exclusivement faite pour MySQL, ce qui est son gros avantage comparé à mysqli. Si vous savez vous servir de l’API PDO, vous pouvez l’utiliser sur n’importe quelle base de données, pas besoin d’apprendre à se servir d’une nouvelle interface. De plus, si votre projet est susceptible de changer de base de données, la modification de votre code source sera minime, ce qui lui donne un autre point.

L’utilisation de PDO est plus simple que mysqli. Il utilise moins de méthodes pour exécuter une requête comparée à mysqli. De plus, lors des requêtes préparées, il donne la possibilité de nommer les paramètres ce qui est pratique tant bien pour la lisibilité que pour éviter les erreurs de positionnement des paramètres.

Et enfin, pratiquement tout le monde utilise PDO. Les avantages que donne PDO notamment sur la flexibilité et la simplicité en fait pratiquement un standard de PHP.

PDO :

<?php

$bdd = new PDO('mysql:host=serveur;dbname=basededonnes;charset=utf8mb4', 'utilisateur', 'motdepasse', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

$resultat = $bdd->query('SELECT * FROM table');

echo 'Il y a '. $resultat->rowCount() . ' entrée(s) dans la base de données : </br>';

while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
    echo $donnees['id'] . ' '.$donnees['message'].'</br>';
}

Conclusion

Pour conclure, les différences sont mine de rien subtiles entre les deux API. PDO reste malgré tout l’API qui possède l’avantage d’être utilisable sur toutes les bases de données, elle est aussi celle qui est la plus utilisée.

On peut penser par cette comparaison que mysqli est moins bon, mais si votre projet utilise exclusivement MySQL, cette API peut aussi être un bon choix.

PDO :

  • Utilisable sur tous types de base de données
  • API simple et clair
  • API la plus connue

mysqli :

  • Fonctionnalités avancées de MySQL
  • API la plus performante
  • API disponible en Procédurale et Orienté Object
Partager l’article :
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.