Choisir une API

PHP offre des APIs diffĂ©rentes pour se connecter Ă  MySQL. Ci-dessous, l'on trouvera les APIs fournies par les extensions 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 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']);

Comparaison des fonctionnalités

La performance globale des deux 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. Souvent, l'impact est infĂ©rieur Ă  0.1%.

  ext/mysqli PDO_MySQL
Introduite en PHP version 5.0 5.1
Inclus avec PHP 7.x et 8.x Oui Oui
Statut du développement Active Active
Cycle de vie Active Active
Recommandé pour de nouveaux projets Oui Oui
Interface orientée objet Oui Oui
Interface procédurale Oui Non
L'API supporte les requĂȘtes non-bloquantes, asynchrones avec mysqlnd Oui Non
Connexions persistantes disponibles Oui Oui
L'API supporte les jeux de caractĂšres Oui Oui
L'API supporte les requĂȘtes prĂ©parĂ©es cĂŽtĂ© serveur Oui Oui
L'API supporte les requĂȘtes prĂ©parĂ©es cĂŽtĂ© client Non Oui
L'API supporte les procédures stockées Oui Oui
L'API supporte les requĂȘtes multiples Oui La plupart
L'API supporte les transactions Oui Oui
Les transactions peuvent ĂȘtre contrĂŽlĂ©es avec SQL Oui Oui
Supporte toutes les fonctionnalités de MySQL 5.1+ Oui La plupart
add a note

User Contributed Notes 1 note

up
20
alvaro at demogracia dot com ¶
13 years ago
Apart from the feature list, I suggest you try out both MySQLi and PDO and find out what API design you like most. MySQLi is more powerful and probably more complex to learn. PDO is more elegant and has the advantage that you only need to learn one PHP API if you need to work with different DBMS in the future.