Elegir una biblioteca

Las extensiones PHP mysqli y PDO_MySQL son envolventes ligeras de una biblioteca cliente C. Las extensiones pueden utilizar la biblioteca mysqlnd, o la biblioteca libmysqlclient. La elección de la biblioteca se realiza en el momento de la compilación.

La biblioteca mysqlnd forma parte de la distribución de PHP. Ofrece funcionalidades como conexiones perezosas, caché de consultas, que no están disponibles con libmysqlclient, por lo que se recomienda utilizar la biblioteca interna mysqlnd. Ver la documentación de mysqlnd para obtener más información, así como una lista de las funcionalidades que ofrece.

Ejemplo #1 Comando de configuración para el uso de mysqlnd o libmysqlclient

// Recomendado, compilación con mysqlnd
$ ./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd

// Alternativamente recomendado, compilación con mysqlnd
$ ./configure --with-mysqli --with-pdo-mysql

// No recomendado, compilación con libmysqlclient
$ ./configure --with-mysqli=/path/to/mysql_config --with-pdo-mysql=/path/to/mysql_config

Ejemplo #2 Comparación de las instrucciones preparadas

<?php
// mysqli
$mysqli = new mysqli("example.com", "usuario", "contraseña", "base de datos");
$statement = $mysqli->prepare("SELECT District FROM City WHERE Name=?");
$statement->execute(["Amersfoort"]);
$result = $statement->get_result();
$row = $result->fetch_assoc();
echo
htmlentities($row['District']);

// PDO
$pdo = new PDO('mysql:host=example.com;dbname=base de datos', 'usuario', 'contraseña');
$statement = $pdo->prepare("SELECT District FROM City WHERE Name=?");
$statement->execute(["Amersfoort"]);
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo
htmlentities($row['District']);

Comparación de funcionalidades de las bibliotecas

Se recomienda utilizar la biblioteca mysqlnd en lugar de la biblioteca cliente servidor MySQL (libmysqlclient). Ambas bibliotecas son soportadas y mejoradas continuamente.

  Driver nativo MySQL (mysqlnd) Biblioteca cliente servidor MySQL (libmysqlclient)
Forma parte de la distribución de PHP No
Introducido en versión de PHP 5.3.0 N/A
Licencia Licencia PHP 3.01 Doble licencia
Estado de desarrollo Activo Activo
Ciclo de vida Sin fin anunciado Sin fin anunciado
Compilado por defecto (para todas las extensiones MySQL) No
Soporte del protocolo de compresión
Soporte de SSL
Soporte de pipes nombrados
Consultas no bloqueantes, asíncronas No
Estadísticas de rendimiento No
LOAD LOCAL INFILE respeta la directiva open_basedir No
Uso del sistema de gestión de memoria nativo de PHP (es decir, sigue los límites de memoria de PHP) No
Devuelve las columnas numéricas en forma de double (COM_QUERY) No
Devuelve las columnas numéricas en forma de string (COM_QUERY)
API del plugin Limitada
Reconexión automática No Opcional
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top