Controladores PDO
PHP Manual

Funciones de MySQL (PDO_MYSQL)

Introducción

PDO_MYSQL es un controlador que implementa la interfaz de Objetos de Datos de PHP (PDO) para permitir el acceso de PHP a bases de datos MySQL 3.x, 4.x y 5.x.

PDO_MYSQL aprovechará el soporte nativo de sentencias preparadas presente en MySQL 4.1 y superior. Si se utiliza una versión anterior de las bibliotecas cliente de MySQL, PDO las emulará.

Advertencia

Algunos tipos de tablas (motores de almacenamiento) de MySQL no admiten transacciones. Cuando se escribe código de base de datos transaccional usando un tipo de tabla que no soporta transacciones, MySQL supondrá que una transacción fue iniciada con éxito. Además, cualquier consulta DDL emitida consignará implícitamente cualquier transacción pendiente.

Instalación

Utilice --with-pdo-mysql[=DIR] para instalar la extensión PDO MySQL, donde la opción [=DIR] es el directorio base de la instalación de MySQL. Si mysqlnd es pasado como [=DIR], entonces será utilizado el driver nativo de MySQL.

Opcionalmente, el --with-mysql-sock[=DIR] establece la ubicación del puntero del socket de unix de MySQL para todas las extensiones de MySQL, incluyendo PDO_MYSQL. Si no se especifica, se busca en las ubicaciones predeterminadas.

Opcionalmente, el --with-zlib-dir[=DIR] se utiliza para establecer la ruta para el prefijo de instalación de libz.

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock

El soporte SSL se habilita mediante las constantes apropiadas constantes PDO_MySQL, lo cual es equivalente a llamar a la » función mysql_ssl_set() de la API en C de MySQL. Asimismo, SSL no se puede habilitar con PDO::setAttribute, debido a que la conexión ya existe. Ver también la documentación de MySQL sobre » conectando a MySQL con SSL.

Historial de cambios
Versión Descripción
5.4.0 Se dejan de soportar las librerías cliente de MySQL inferiores a 4.1.
5.3.9 Agregado el soporte a SSL con mysqlnd y OpenSSL.
5.3.7 Agregado el soporte a SSL con libmysql y OpenSSL.

Constantes predefinidas

Estas constantes están definidas por este driver, y estarán disponibles sólo cuando la extensión haya sido compilada con PHP, o bien sea cargada dinámicamente en ejecución. Además, estas constantes driver-specific deberían ser utilizadas sólo si está usando este driver. Usar atributos driver-specific con otro driver puede resultar en un comportamiento inesperado. PDO::getAttribute() puede ser empleado para obtener el atributo PDO_ATTR_DRIVER_NAME para comprobar el driver, si su código puede correr con múltiples drivers.

MYSQL_ATTR_USE_BUFFERED_QUERY (integer)
Si este atributo es definido como TRUE en PDOStatement, el driver de MySQL usará las versiones de la API de MySQL guardadas en el buffer. Si se está escribiendo código portable, en su lugar se debería usar PDOStatement::fetchAll().

Ejemplo #1 Forzar consultas para que sean guardadas en el buffer en mysql

<?php
if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
    
$stmt $db->prepare('select * from foo',
        array(
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));
} else {
    die(
"mi aplicación sólo funciona con mysql; deberia \$stmt->fetchAll() en su lugar");
}
?>

MYSQL_ATTR_LOCAL_INFILE (integer)

Activa LOAD LOCAL INFILE.

Se tiene que tener en cuenta que esta constante puede ser usada solamente en el array driver_options mientras se está contruyendo un nuevo manejador de base de datos.

MYSQL_ATTR_INIT_COMMAND (integer)

Comando a ejecutar cuando se conecta al servidor MySQL. Al reconectar se volverá a ejecutar automáticamente.

Se tiene que tener en cuenta que esta constante puede ser usada solamente en el array driver_options mientras se está contruyendo un nuevo manejador de base de datos.

MYSQL_ATTR_READ_DEFAULT_FILE (integer)

Lee las opciones desde el fichero indicado en lugar de my.cnf. Si se usa mysqlnd esta opción no está disponible debido a que mysqlnd no lee los archivos de configuración de mysql.

MYSQL_ATTR_READ_DEFAULT_GROUP (integer)

Opciones de lectura del grupo indicado desde my.cnf o desde el archivo definido con MYSQL_READ_DEFAULT_FILE. Si se usa mysqlnd esta opción no está disponible debido a que mysqlnd no lee los archivos de configuración de mysql.

MYSQL_ATTR_MAX_BUFFER_SIZE (integer)

Tamaño máximo de buffer. Por defecto 1 MiB. Esta constante no es soportada cuando está compilada para mysqlnd.

MYSQL_ATTR_DIRECT_QUERY (integer)

Realiza consultas directas, no usa comandos preparados.

MYSQL_ATTR_FOUND_ROWS (integer)

Devuelve el número de filas encontradas, no el número de filas modificadas.

MYSQL_ATTR_IGNORE_SPACE (integer)

Permite espacios después de los nombres de función. Hace de todos los nombres de función palabras reservadas.

MYSQL_ATTR_COMPRESS (integer)

Activa la compresión de comunicación de red. Si se usa mysqlnd esta opción no está disponible.

MYSQL_ATTR_SSL_CA (integer)

La ruta a la autoridad certificadora SSL.

Existe a partir de PHP 5.3.7.

MYSQL_ATTR_SSL_CAPATH (integer)

La ruta al directorio que contiene los certificados AC SSL autorizados, los cuales están almacenados en formato PEM.

Existe a partir de PHP 5.3.7.

MYSQL_ATTR_SSL_CERT (integer)

La ruta al certificado SSL.

Existe a partir de PHP 5.3.7.

MYSQL_ATTR_CIPHER (integer)

Una lista de uno o más cifradores permisibles a usar para la encriptación SSL, en un formato entendido por OpenSSL. Por ejemplo: DHE-RSA-AES256-SHA:AES128-SHA

Existe a partir de PHP 5.3.7.

MYSQL_ATTR_KEY (integer)

La ruta a la clave SSL.

Existe a partir de PHP 5.3.7.

Configuración en tiempo de ejecución

El comportamiento de estas funciones se ve afectado por la configuración de php.ini.

Opciones de configuración de PDO_MYSQL
Nombre Por defecto Cambiable
pdo_mysql.default_socket "/tmp/mysql.sock" PHP_INI_SYSTEM
pdo_mysql.debug NULL PHP_INI_SYSTEM
Para más detalles y definiciones de los modos de PHP_INI_*, vea Dónde se puede realizar un ajuste de configuración.

He aquí una breve explicación de las directivas de configuración.

pdo_mysql.default_socket string

Establece un socket de dominio Unix. Este valor se puede establecer en tiempo de compilación si un socket de dominio se encuentra en la configuración. Esta configuración ini es sólo Unix.

pdo_mysql.debug boolean

Activa la depuración de PDO_MYSQL. Este ajuste solo está disponible cuando PDO_MYSQL está compilado para mysqlnd y en PDO modo de depuración.

Tabla de contenidos


Controladores PDO
PHP Manual