Elegir una API

PHP ofrece tres API diferentes para conectarse a MySQL. Abajo se muestran las API proporcionadas por las extensiones mysql, mysqli, y PDO. Cada trozo de código crea una conexión al servidor de MySQL que se está ejecutando en "ejemplo.com" con el nombre de usuario "usuario" y la contraseña "contraseña". También se ejecuta una consulta para saludar al usuario.

Ejemplo #1 Comparación de las tres API de MySQL

<?php
// mysqli
$mysqli = new mysqli("ejemplo.com", "usuario", "contraseña", "basedatos");
$resultado = $mysqli->query("SELECT '¡Hola, querido usuario de MySQL!' AS _message FROM DUAL");
$fila = $resultado->fetch_assoc();
echo
htmlentities($fila['_message']);

// PDO
$pdo = new PDO('mysql:host=ejemplo.com;dbname=basedatos', 'usuario', 'contraseña');
$sentencia = $pdo->query("SELECT '¡Hola, querido usuario de MySQL!' AS _message FROM DUAL");
$fila = $sentencia->fetch(PDO::FETCH_ASSOC);
echo
htmlentities($fila['_message']);

// mysql
$c = mysql_connect("ejemplo.com", "usuario", "contraseña");
mysql_select_db("basedatos");
$resultado = mysql_query("SELECT '¡Hola, querido usuario de MySQL!' AS _message FROM DUAL");
$fila = mysql_fetch_assoc($resultado);
echo
htmlentities($fila['_message']);
?>

API recomendada

Se recomienda usar las extensiones mysqli o PDO_MySQL. No se recomienda usar la extensión mysql antigua para nuevos desarrollos, ya que ha sido declarada obsoleta en PHP 5.5.0 y eliminada en PHP 7. Se proporciona una matriz detallada de comparación de características más abajo. El rendimiento global de las tres extensiones se considera que sea aproximadamente el mismo. Aunque el rendimiento de la extensión aporta solamente una fracción del total del tiempo de ejecución de una consulta web de PHP. A menudo, el impacto es tan bajo como 0.1%.

Comparación de características

 ext/mysqliPDO_MySQLext/mysql
Versión de PHP donde se introdujo5.05.12.0
Incluida con PHP 5.x
Incluida con PHP 7.xNo
Estado de desarrolloActivoActivoMantenimiento solamente en 5.x; eliminada en 7.x
Ciclo de vidaActivoActivoObsoleto en 5.x; eliminado en 7.x
Recomendada para nuevos proyectosNo
Interfaz de POONo
Interfaz procedimentalNo
La API admite la no espera, consultas asíncronas con mysqlndNoNo
Conexiones persistentes
La API admite conjunto de caracteres
La API admite sentencias preparadas del lado del servidorNo
La API admite sentencias preparadas del lado del clienteNoNo
La API admite procedimientos almacenadosNo
API admite sentencias múltiplesLa mayoríaNo
La API admite transaccionesNo
Las transacciones se pueden controlar con SQL
Admite toda la funcionalidad de MySQL 5.1+La mayoríaNo
To Top