Choisir une API
PHP offre 3 APIs différentes pour se connecter à MySQL. Ci-dessous, vous trouverez les APIs fournies par les extensions mysql, mysqli et PDO. Chaque exemple de code crée une connexion à un serveur MySQL s'exécutant sur le domaine "example.com", en utilisant le nom d'utilisateur "user", le mot de passe "password". Et une requête est exécutée pour saluer l'utilisateur.
Exemple #1 Comparaison des 3 APIs MySQL
<?php
// mysqli
$mysqli = new mysqli("example.com", "user", "password", "database");
$result = $mysqli->query("SELECT 'Bonjour, cher utilisateur de MySQL !' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);
// PDO
$pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password');
$statement = $pdo->query("SELECT 'Bonjour, cher utilisateur de MySQL !' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);
// mysql
$c = mysql_connect("example.com", "user", "password");
mysql_select_db("database");
$result = mysql_query("SELECT 'Bonjour, cher utilisateur de MySQL !' AS _message FROM DUAL");
$row = mysql_fetch_assoc($result);
echo htmlentities($row['_message']);
?>
API recommandé
Il est recommandé d'utiliser soit l'extension mysqli, soit l'extension PDO_MySQL. Il n'est pas recommandé d'utiliser l'ancienne extension mysql pour de nouveaux développements sachant qu'elle est obsolète depuis PHP 5.5.0, et sera supprimée dans un futur proche. Une matrice de comparaison détaillant les fonctionnalités est fournie ci-dessous. La performance globale des 3 extensions peut être considérée comme identique. Malgré tout, la performance de l'extension constitue seulement une fraction du temps total d'exécution d'une requête web PHP. Aussi, l'impact est inférieur à 0.1%.
Comparaison des fonctionnalités
ext/mysqli | PDO_MySQL | ext/mysql | |
---|---|---|---|
Introduite en PHP version | 5.0 | 5.1 | 2.0 |
Inclus avec PHP 5.x | Oui | Oui | Oui |
Statut du développement | Active | Active | Uniquement de la maintenance |
Cycle de vie | Active | Active | Obsolète |
Recommandé pour de nouveaux projets | Oui | Oui | Non |
Interface orientée objet | Oui | Oui | Non |
Interface procédurale | Oui | Non | Oui |
L'API supporte les requêtes non-bloquantes, asynchrones avec mysqlnd | Oui | Non | Non |
Connexions persistentes disponibles | Oui | Oui | Oui |
L'API supporte les jeux de caractères | Oui | Oui | Oui |
L'API supporte les requêtes préparées côté serveur | Oui | Oui | Non |
L'API supporte les requêtes préparées côté client | Non | Oui | Non |
L'API supporte les procédures stockées | Oui | Oui | Non |
L'API supporte les requêtes multiples | Oui | La plupart | Non |
L'API supporte les transactions | Oui | Oui | Non |
Les transactions peuvent être contrôlées avec SQL | Oui | Oui | Oui |
Supporte toutes les fonctionnalités de MySQL 5.1+ | Oui | La plupart | Non |
Version en cache
05/11/2024 08:00:09 Cette version de la page est en cache (à la date du 05/11/2024 08:00:09) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-mysqlinfo.api.choosing.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.