Aperçu des drivers PHP MySQL
PHP Manual

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. 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'impacte 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 Passage en obsolète annoncé
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

Aperçu des drivers PHP MySQL
PHP Manual