PHP ofrece diferentes APIs para conectarse a MySQL. A continuación, se encuentran las APIs proporcionadas por las extensiones mysqli y PDO. Cada ejemplo de código crea una conexión a un servidor MySQL que se ejecuta en el dominio "example.com", utilizando el nombre de usuario "user", la contraseña "password". Y se ejecuta una consulta para saludar al usuario.
Ejemplo #1 Comparación de las APIs MySQL
<?php
// mysqli
$mysqli = new mysqli("example.com", "user", "password", "database");
$result = $mysqli->query("SELECT '¡Hola, querido usuario 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 '¡Hola, querido usuario de MySQL!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);
Comparación de funcionalidades
El rendimiento global de las dos extensiones puede considerarse idéntico. Sin embargo, el rendimiento de la extensión constituye solo una fracción del tiempo total de ejecución de una solicitud web PHP. A menudo, el impacto es inferior al 0.1%.
ext/mysqli | PDO_MySQL | |
---|---|---|
Introducida en la versión de PHP | 5.0 | 5.1 |
Incluida con PHP 7.x y 8.x | Sí | Sí |
Estado de desarrollo | Activo | Activo |
Ciclo de vida | Activo | Activo |
Recomendado para nuevos proyectos | Sí | Sí |
Interfaz orientada a objetos | Sí | Sí |
Interfaz procedimental | Sí | No |
La API soporta consultas no bloqueantes, asíncronas con mysqlnd | Sí | No |
Conexiones persistentes disponibles | Sí | Sí |
La API soporta juegos de caracteres | Sí | Sí |
La API soporta consultas preparadas del lado del servidor | Sí | Sí |
La API soporta consultas preparadas del lado del cliente | No | Sí |
La API soporta procedimientos almacenados | Sí | Sí |
La API soporta consultas múltiples | Sí | La mayoría |
La API soporta transacciones | Sí | Sí |
Las transacciones pueden controlarse con SQL | Sí | Sí |
Soporta todas las funcionalidades de MySQL 5.1+ | Sí | La mayoría |