Elegir una API

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
+add a note

User Contributed Notes 1 note

up
11
alvaro at demogracia dot com
14 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.