“Aplicaciones Web dinámicas con PHP y MySql”
Funciones PHP para el acceso a Bases de Datos MySQL RDBMS
Sergio Gabriel Rodríguez http://www.3trex.com.ar
Acceso a una Base de Datos Una vez que tenemos creada la base de datos en nuestro servidor, el siguiente paso es conectarnos a la misma desde una página PHP. Para ello PHP nos proporciona una serie de instrucciones para acceder a bases de datos MySQL. •
• Los pasos para acceder desde PHP a una base de datos son los siguientes:
1. Conectarse con el servidor de Base de Datos. 2. Seleccionar la Base de Datos con la que vamos a trabajar. 3. Enviar la instrucción SQL a la Base de Datos. 4. Obtener y procesar los resultados. 5. Cerrar la conexión con el servidor.
Acceso a una Base de Datos Las Instrucciones para conectar con una Base de Datos MySQL en PHP para cada uno de estos pasos son:
•
1. Conectarse con el servidor de Base de Datos. mysql_connect() 2. Seleccionar la Base de Datos con la que vamos a trabajar. mysql_select_db() 3. Enviar la instrucción SQL a la Base de Datos. mysql_query() 4. Obtener y procesar los resultados. mysql_fetch_row(), mysql_fetch_array() 1. Cerrar la conexión con el servidor.
mysql_close();
Acceso a una Base de Datos Solicitud de una página web dinámica con Base de datos El server busca el Script solicitado
El cliente solicita una Página dinámica
Internet
El script tiene código de acceso a BD
El documento HTML generado es enviado al cliente
El navegador interpreta y muestra el HTML
El script PHP genera un documento HTML a partir de los datos extraídos de la BD
PHP se conecta y accede a la BD
Conectarse con el server de BD Al ejecutar la instrucción mysql_connect creamos un vínculo entre la base de datos y la pagina PHP, este vínculo será usado posteriormente en las consultas que hagamos a la base de datos.
•
Devuelve un identificador de la conexión en caso de éxito y false en caso contrario Sintaxis:
$conexion = mysql_connect (servidor, username, password); Ejemplo: $conexion = mysql_connect (“localhost”, “cursophp”, “password”) or die (“No se puede conectar con el servidor”);
Seleccionar una Base de Datos mysql_select_db: establece la BD activa que estará asociada con el identificador de conexión especificado. Si no se específica un identificador de conexión, se asume la última conexión abierta.
•
Devuelve true en caso de éxito y false en caso contrario Sintaxis:
$db = mysql_select_db (nombreBD, identificador); Ejemplo: $conexion = mysql_select_db (“movieStore”);
Enviar instrucción SQL a la BD • Una
vez que nos hemos conectado con el servidor de bases de datos, y seleccionado la BD, ya podemos realizar consultas a las tablas de la base de datos. mysql_query: Envía una consulta de MySQL a la base de datos especificada en la conexión activa. Sintaxis:
$sqlResult = mysql_query (instrucción, conexion); Ejemplo:
$sqlResult = mysql_query (“SELECT * FROM genero”);
Enviar instrucción SQL a la BD Valores retornados: Para las sentencias SELECT, SHOW, DESCRIBE o EXPLAIN, mysql_query() regresa un tipo resource (recurso) en caso exitoso, y FALSE en error. Para otro tipo de sentencia SQL, UPDATE, DELETE, DROP, etc, mysql_query() regresa TRUE en caso exitoso y FALSE en error.
Recurso: Un recurso es una variable especial, que contiene una referencia a un recurso externo. Los recursos son creados y usados por funciones especiales.
Obtener y procesar los resultados • Después
de haber realizado la consulta sql a la bd, y si todo salió bien, obtenemos una variable tipo recurso con el resultado de la misma, para acceder a este resultado y procesarlo debemos usar funciones especiales. mysql_fetch_row: Devuelve un array numérico con los valores de los campos de la fila actual de la consulta, y mueve el puntero interno que marca la fila actual a la siguiente fila, si no hay mas filas devuelve false. El índice de la tabla comienza en 0. Sintaxis:
$fila = mysql_fetch_row(query_result);
Obtener y procesar los resultados • Ejemplo
1: La consulta devuelve un solo registro
Obtener y procesar los resultados • Ejemplo
2: La consulta devuelve más de un registro
’; } ?>
Obtener y procesar los resultados •mysql_fetch_array: Devuelve un array asociativo con los valores de los campos de la fila actual de la consulta, y mueve el puntero interno que marca la fila actual a la siguiente fila, si no hay mas filas devuelve false. Los índices del array son los nombres de los campos seleccionados. Sintaxis:
$fila = mysql_fetch_array(query_result);
Obtener y procesar los resultados • Ejemplo
1: La consulta devuelve un solo registro
Obtener y procesar los resultados • Ejemplo
2: La consulta devuelve más de un registro
’; } ?>
Cerrar la conexión con el servidor •mysql_close: cierra la conexión a la base de datos MySQL asociada al identificador de conexión especificado. Si no se especifica un identificador de conexión, se asume le de la última conexión abierta. Devuelve: TRUE si se ha cerrado correctamente, FALSE en caso de errror. Esta función no es normalmente ya que la conexión se cerrará automáticamente al final de la ejecución del script o página Sintaxis:
mysql_close(identificador);
Otras funciones •mysql_num_rows(query_result): Devuelve el número de filas del resultado de una consulta.
$cantidadFilas = mysql_num_rows($resultado);
•mysql_error(): Devuelve el texto asociado al error producido en la última operación realizada por la base de datos.
if (!mysql_query($consulta){ echo “error :”. mysql_error(); }
Otras funciones •mysql_insert_id(): Esta función devuelve el ID (identificador) generado para los campos autonuméricos (AUTO_INCREMENTED). El ID devuelto es el correspondiente al de la última operación INSERT.
$ultimoID = mysql_insert_id();
Ejemplo • Si tenemos la tabla ‘Pelicula’ con 5 campos: id, titulo, director, genero y fecha_alta, de la cual seleccionamos sólo aquellas películas del género ‘Acción’ PELICULA 1
Título 1
Director 1
Terror
05/02/2004
2
Título 2
Director 2
Acción
05/02/2004
3
Título 3
Director 3
Acción
04/02/2004
4
Título 4
Director 4
Suspenso
01/02/2004
5
Título 5
Director 5
Acción
31/01/2004
$sqlResult = mysql_query(“SELECT * FROM pelicula WHERE genero=‘Acción’”);
Ejemplo • La consulta nos devolvería una variable tipo resource $sqlResult con 3 registros. PELICULA 1
Título 1
Director 1
Terror
05/02/2004
2
Título 2
Director 2
Acción
05/02/2004
3
Título 3
Director 3
Acción
04/02/2004
$sqlResult
4
Título 4
Director 4
Suspenso
01/02/2004
$nfilas=3
5
Título 5
Director 5
Acción
31/01/2004
$nfilas = mysql_num_rows($sqlResult);
Ejemplo • Para obtener el resultado de la consulta y mostralos, necesitamos recorrer la variable $sqlResult con las funciones mysql_fetch_row o mysql_fetch_array.
$nfilas = mysql_num_rows ($sqlResult); if ($nfilas > 0) { for ($i=0; $i<$nfilas; $i++) { $fila = mysql_fetch_array ($sqlResult); echo $fila[‘id’].$fila[‘titulo’]; } }