Funciones MySQL

LXXXIX. Funciones MySQL

Introducci贸n

Estas funciones le permiten acceder a servidores de bases de datos MySQL. Puede encontrar m谩s informaci贸n sobre MySQL en http://www.mysql.com/.

La documentaci贸n de MySQL puede encontrarse en http://dev.mysql.com/doc/.

Requisitos

Para contar con 茅stas funciones, debe compilar PHP con soporte MySQL.

Instalaci贸n

Para la compilaci贸n, simplemente use la opci贸n de configuraci贸n --with-mysql[=DIR], en donde el valor opcional [DIR] apunta al directorio de instalaci贸n de MySQL.

Esta extensi贸n de MySQL no soporta la funcionalidad completa de versiones de MySQL superiores a 4.1.0. Para ellas, use MySQLi.

Si quisiera instalar la extensi贸n mysql junto con la extensi贸n mysqli, debe usar la misma biblioteca de cliente para evitar cualquier conflicto.

Instalaci贸n en Systemas Linux

PHP 4

La opci贸n --with-mysql est谩 habilitada por defecto. Para desactivar este comportamiento predeterminado, usted puede usar la opci贸n de configuraci贸n --without-mysql. Si se habilita MySQL sin especificar el directorio de instalaci贸n de MySQL, PHP usar谩 las bibliotecas de cliente de MySQL incorporadas.

Los usuarios que ejecutan otras aplicaciones que usan MySQL (auth-mysql, por ejemplo) no deber铆an usar la biblioteca incorporada, en su lugar deben especificar la ruta al directorio de instalaci贸n de MySQL, de este modo: --with-mysql=/ruta/hacia/mysql. Esto obligar谩 a PHP a usar las bibliotecas de cliente instaladas por MySQL, para as铆 evitar cualquier conflicto.

PHP 5+

El soporte para MySQL no se encuentra habilitado por defecto, ni lo est谩 la biblioteca incorporada con PHP. Lea este FAQ para conocer los detalles del porqu茅. Use la opci谩n de configuraci贸n --with-mysql[=DIR] para incluir el soporte para MySQL. Es posible descargar las cabeceras y bibliotecas desde MySQL.

Instalaci贸n en Sistemas Windows

PHP 4

La extensi贸n MySQL de PHP es compilada en PHP.

PHP 5+

El soporte para MySQL ya no es habilitado por defecto, as铆 que el DLL php_mysql.dll DLL debe habilitarse al interior de php.ini. Asimismo, PHP necesita acceder a la biblioteca de cliente MySQL. Un archivo de nombre libmysql.dll es incluido en la distribuci贸n de PHP en Windows, y para que PHP se comunique con MySQL, este archivo necesita estar disponible en la ruta PATH de los sistemas Windows. Vea la entrada del FAQ titulada "C贸mo agrego mi directorio PHP a la ruta PATH en Windows" para m谩s informaci贸n sobre c贸mo hacerlo. Aunque copiar libmysql.dll al directorio de sistema de Windows tambi茅n funciona (ya que el directorio de sistema es parte del PATH del sistema por defecto), tal acci贸n no es recomendada.

Al igual que ocurre con cualquier otra extensi贸n (como php_mysql.dll), la directiva de PHP extension_dir debe definirse con el directorio en donde est谩n ubicadas las extensiones PHP. Vea tambi茅n las Instrucciones de Instalaci贸n Manual en Windows. Un valor de ejemplo de extension_dir para PHP 5 es c:\php\ext

Nota: Si al iniciar el servidor web un error similar al siguiente ocurre: "Unable to load dynamic library './php_mysql.dll'", se debe a que php_mysql.dll o libmysql.dll no pueden encontrarse por el sistema.

MySQL Installation Notes

Aviso

Pueden encontrarse problemas de inicializaci贸n y bloqueos de PHP cuando esta extensi贸n es cargada en conjunto con la extensi贸n recode. Consulte sobre la extensi贸n recode para m谩s informaci贸n.

Nota: Si necesita juegos de caracteres diferentes a latin (el juego por defecto), tendr谩 que instalar una biblioteca de mysql externa (no incorporada) que haya sido compilada con soporte para los juegos de caracteres.

Configuraci贸n en tiempo de ejecuci贸n

El comportamiento de estas funciones est谩 afectado por los valores definidos en php.ini.

Tabla 1. Opciones de Configuraci贸n MySQL

NombrePor defectoModificableCambios
mysql.allow_persistent"1"PHP_INI_SYSTEM 
mysql.max_persistent"-1"PHP_INI_SYSTEM 
mysql.max_links"-1"PHP_INI_SYSTEM 
mysql.trace_mode"0"PHP_INI_ALLDisponible desde PHP 4.3.0.
mysql.default_portNULLPHP_INI_ALL 
mysql.default_socketNULLPHP_INI_ALLDisponible desde PHP 4.0.1.
mysql.default_hostNULLPHP_INI_ALL 
mysql.default_userNULLPHP_INI_ALL 
mysql.default_passwordNULLPHP_INI_ALL 
mysql.connect_timeout"60"PHP_INI_ALLPHP_INI_SYSTEM en PHP <= 4.3.2. Disponible desde PHP 4.3.0.
For further details and definitions of the PHP_INI_* constants, see the Ap茅ndice G.

A continuaci贸n se presenta una corta explicaci贸n de las directivas de configuraci贸n.

mysql.allow_persistent boolean

Indica si se permiten conexiones persistentes con MySQL.

mysql.max_persistent integer

El n煤mero m谩ximo de conexiones persistentes con MySQL por proceso.

mysql.max_links integer

El n煤mero m谩ximo de conexiones con MySQL por proceso, incluyendo conexiones persistentes.

mysql.trace_mode boolean

Modo de rastreo. Cuando se habilita mysql.trace_mode, se muestran advertencias para la apertura de tablas/铆ndices, conjuntos de resultados no liberados, y errores SQL. (Se introdujo en PHP 4.3.0)

mysql.default_port string

El n煤mero de puerto TCP predeterminado para usar cuando se conecta con el servidor de bases de datos, si no se indica otro. Si no se indica un valor predeterminado, el puerto se obtendr谩 de la variable de entorno MYSQL_TCP_PORT, la entrada mysql-tcp en /etc/services o la constante de tiempo de compilaci贸n MYSQL_PORT, en ese orden. En Win32 s贸lo se usa la constante MYSQL_PORT.

mysql.default_socket string

El nombre de socket predeterminado a ser usado cuando se realicen conexiones con un servidor de base de datos local, si no se indica alg煤n otro.

mysql.default_host string

La m谩quina anfitriona predeterminada a ser usada cuando se realicen conexiones con un servidor de bases de datos, si no se indica otro valor. No es aplicable en SQL safe mode.

mysql.default_user string

El nombre de usuario prodeterminado para conectarse al servidor de bases de datos si no se indica otro. No es aplicable bajo SQL safe mode.

mysql.default_password string

La contrase帽a predeterminada a usar cuando se realicen conexiones con el servidor de bases de datos, si no se indica otro valor. No es aplicable en SQL safe mode.

mysql.connect_timeout integer

Tiempo de espera m谩ximo de conexi贸n, en segundos. Bajo Linux este tiempo de espera es usado tambi茅n cuando se espera la primera respuesta del servidor.

Tipos de recursos

Hay dos tipos de recursos usados en el m贸dulo MySQL. El primero es el identificador de enlace para una conexi贸n de base de datos, el segundo es un recurso que almacena el resultado de una consulta.

Constantes predefinidas

Estas constantes est谩n definidas por esta extensi贸n y estar谩n disponibles solamente cuando la extensi贸n ha sido o bien compilada dentro de PHP o grabada din谩micamente en tiempo de ejecuci贸n.

A partir de PHP 4.3.0, es posible especificar banderas de cliente adicionales para las funciones mysql_connect() y mysql_pconnect(). Las siguientes constantes est谩n definidas:

Tabla 2. Constantes de cliente MySQL

ConstanteDescripci贸n
MYSQL_CLIENT_COMPRESSUsar protocolo de compresi贸n
MYSQL_CLIENT_IGNORE_SPACEPermitir espacios despu茅s de nombres de funciones
MYSQL_CLIENT_INTERACTIVEPermitir tantos segundos de inactividad como indique interactive_timeout (en lugar de wait_timeout) antes de cerrar la conexi贸n
MYSQL_CLIENT_SSLUsar encripci贸n SSL. Esta bandera se encuentra disponible 煤nicamente con la versi贸n 4.x o m谩s reciente de la biblioteca cliente de MySQL. La versi贸n 3.23.x se distribuye tanto con PHP 4 como con los binarios de Windows de PHP 5.

La funci贸n mysql_fetch_array() usa una constante para los diferentes tipos de matrices de resultado. Las siguientes constantes est谩n definidas:

Tabla 3. Constantes MySQL-fetch

ConstanteDescripci贸n
MYSQL_ASSOC Las columnas son devueltas en la matriz usando el nombre del campo como 铆ndice.
MYSQL_BOTH Las columnas son devueltas en la matriz teniendo tanto un 铆ndice num茅rico como un 铆ndice correspondiente al nombre del campo.
MYSQL_NUM Las columnas son devueltas en la matriz teniendo un 铆ndice num茅rico a los campos. Este 铆ndice comienza en 0, el primer campo del resultado.

Notes

Nota: La mayor铆a de funciones de MySQL aceptan identificador_enlace como 煤ltimo par谩metro opcional. Si no es definido, se utiliza la 煤ltima conexi贸n abierta. Si no existe, se intenta establecer una conexi贸n con los par谩metros predeterminados definidos en php.ini. Si no tiene 茅xito, las funciones devuelven FALSE.

Ejemplos

Este sencillo ejemplo muestra c贸mo conectarse, ejecutar una consulta, imprimir las filas resultantes y desconectarse de una base de datos MySQL.

Ejemplo 1. Ejemplo general de la extensi贸n MySQL

<?php
// Conexion, seleccion de base de datos
$enlace = mysql_connect('host_mysql', 'usuario_mysql', 'contrasenya_mysql')
    or die(
'No pudo conectarse : ' . mysql_error());
echo
'Conexi&oacute;n exitosa';
mysql_select_db('mi_base_de_datos') or die('No pudo seleccionarse la BD.');

// Realizar una consulta SQL
$consulta  = 'SELECT * FROM mi_tabla';
$resultado = mysql_query($consulta) or die('La consulta fall&oacute;: ' . mysql_error());

// Impresion de resultados en HTML
echo "<table>\n";
while (
$linea = mysql_fetch_array($resultado, MYSQL_ASSOC)) {
    echo
"\t<tr>\n";
    foreach (
$linea as $valor_col) {
        echo
"\t\t<td>$valor_col</td>\n";
    }
    echo
"\t</tr>\n";
}
echo
"</table>\n";

// Liberar conjunto de resultados
mysql_free_result($resultado);

// Cerrar la conexion
mysql_close($enlace);
?>

Tabla de contenidos
mysql_affected_rows -- Devuelve el n煤mero de filas afectadas de la 煤ltima operaci贸n MySQL
mysql_change_user --  Cambia el usuario conectado en la conexi贸n activa
mysql_client_encoding -- Devuelve el nombre del juego de caracteres
mysql_close -- cierra el enlace con MySQL
mysql_connect -- Abre una conexi贸n a un servidor MySQL
mysql_create_db -- Crea una base MySQL
mysql_data_seek -- Mueve el puntero interno
mysql_db_name -- Obtener datos de resultado
mysql_db_query -- Envia una sentencia MySQL al servidor
mysql_drop_db -- Borra una base de datos MySQL
mysql_errno -- Deuelve el n煤mero del mensaje de error de la 煤ltima operaci贸n MySQL
mysql_error -- Devuelve el texto del mensaje de error de la 煤ltima operaci贸n MySQL
mysql_escape_string -- Escapa una cadena para su uso en mysql_query
mysql_fetch_array --  Extrae la fila de resultado como una matriz asociativa, una matriz num茅rica o ambas
mysql_fetch_assoc -- Recupera una fila de resultado como una matriz asociativa
mysql_fetch_field --  Extrae la informaci贸n de una columna y la devuelve como un objeto.
mysql_fetch_lengths --  Devuelve la longitud de cada salida en un resultado
mysql_fetch_object -- Extrae una fila de resultado como un objeto
mysql_fetch_row -- Devuelve una fila de resultado como matriz
mysql_field_flags --  Devuelve las banderas asociados con el campo espec铆ficado en un resultado
mysql_field_len --  Devuelve la longitud del campo espec铆ficado
mysql_field_name --  Devuelve el nombre del campo espec铆ficado en un resultado
mysql_field_seek --  Asigna el puntero del resultado al offset del campo espec铆ficado
mysql_field_table --  Devuelve el nombre de la tabla donde est谩 el campo espec铆ficado
mysql_field_type --  Devuelve el tipo del campo espec铆ficado en un resultado
mysql_free_result -- Libera la memoria del resultado
mysql_get_client_info -- Obtener informaci贸n del cliente MySQL
mysql_get_host_info -- Obtener informaci贸n de la m谩quina anfitriona MySQL
mysql_get_proto_info -- Obtener informaci贸n del protocolo MySQL
mysql_get_server_info -- Obtener informaci贸n del servidor MySQL
mysql_info -- Obtiene informaci贸n sobre la consulta m谩s reciente
mysql_insert_id --  Devuelve el identificador generado en la 煤ltima llamada a INSERT
mysql_list_dbs --  Lista las bases de datos disponibles en el servidor MySQL
mysql_list_fields -- Lista los campos del resultado de MySQL
mysql_list_processes -- Lista los procesos MySQL
mysql_list_tables -- Lista las tablas en una base de datos MySQL
mysql_num_fields -- devuelve el n煤mero de campos de un resultado
mysql_num_rows -- Devuelve el n煤mero de filas de un resultado
mysql_pconnect --  Abre una conexi贸n persistente al servidor MySQL
mysql_ping -- Efectuar un chequeo de respuesta (ping) sobre una conexi贸n de servidor o reconectarse si no hay conexi贸n
mysql_query -- Env铆a una consulta de MySQL
mysql_real_escape_string -- Escapa caracteres especiales de una cadena para su uso en una sentencia SQL
mysql_result -- Devuelve datos de un resultado
mysql_select_db -- Selecciona un base de datos MySQL
mysql_stat -- Obtener el status actual del sistema
mysql_tablename -- Devuelve el nombre de la tabla de un campo
mysql_thread_id -- Devuelve el ID del hilo actual
mysql_unbuffered_query -- Env铆a una consulta SQL a MySQL, sin recuperar ni colocar en b煤fer las filas de resultado