Conexión de PHP y MySQL: A continuación se presenta la forma en que se puede conectar PHP con el gestor de bases de datos MySQL. Una vez el servidor ha solicitado al intérprete de PHP la ejecución de un determinado script, este se puede encontrar con sentencias que pretenden manipular los datos almacenados por un gestor de bases de datos. Como se había mencionado con antelación, uno de los gestores de bases de datos mas utilizados en entornos en los que se emplee PHP como lenguaje de programación es MySQL. El alto grado de integración del que se dispone con este gestor y el numeroso grupo de funciones disponibles, unido a las ventajas propias del gestor, hacen de esta pareja una potente plataforma de desarrollo. PHP dispone de un número de funciones nativas que sirven para efectuar cualquier tipo de consulta a MySQL. Todas ellas comienzan por MySQL. A continuación se describe la forma genérica de realizar las operaciones básicas de inserción, consulta, eliminación y actualización sobre las tablas de MySQL. • • • • • • • Conexión con el servidor Conexión con la base de datos Preparación de la(s) consulta(s) SQL requerida(s) (inserción, consulta, eliminación o actualización) Ejecución de la(s) consulta(s) Procesamiento del resultado obtenido si es requerido Liberación de recursos Cierre de la conexión Para realizar estos pasos, disponemos de las funciones indicadas a continuación: mysql_connect(host,usuario,password) Establece la conexión con el servidor. Recibe como parámetros el nombre del ordenador desde el que se hace la conexión (127.0.0.1 ó localhost por defecto), y, opcionalmente, el nombre del usuario y clave si la tiene. Devuelve un identificador de conexión. mysql_select_db(“basededatos”,conexión) Selecciona la base de datos sobre la que se va a trabajar. Se indica mediante una cadena de caracteres que es el nombre de dicha base de datos. El parámetro de conexión es opcional. Programación para sistemas en red II Profesor: Julio César Meza Ramírez mysql_query(consulta, conexión) Ejecuta la consulta SQL indicada como primer parámetro como primer parámetro sobre la base de datos seleccionada en la conexión del segundo parámetro. Como se dijo anteriormente, el segundo parámetro es opcional, y en caso de no ponerse, se ejecutara sobre la conexión activa. Devuelve un identificador de cursor en el que está almacenado el resultado de la ejecución de dicha consulta. mysql_num_fields(cursor) Devuelve el número de atributos que figuran en el cursor que se le pasa como parámetro y en el que se almacena el resultado de la consulta. mysql_num_rows(cursor) Devuelve el número de filas que se han almacenado en el cursor que se le pasa como parámetro. mysql_fetch_row(cursor) Avanza a la siguiente posición de la fila o tupla activa en el cursor. Devuelve un array que contiene en sus celdas cada uno de los valores de los atributos de la fila. mysql_result(cursor,numfila,numcolumna) Devuelve el valor del atributo cuyo número de columna se le pasa como tercer parámetro, en la fila indicada por el segundo parámetro. Si no se le indica el número de la columna, se le devuelve el primero de los atributos. Hay que tener en cuenta que el recorrido se puede desarrollar a través de dos bucles con la sentencia for. mysql_fetch_array(cursor) Devuelve un array, cuyo manejo implica el conocimiento del nombre de los diferentes atributos que serán en la matriz asociativa las respectivas claves. mysql_free_result(cursor) Libera los recursos asociados con el cursor. mysql_close(conexion) Cierra la conexión establecida con mysql_connect(). Programación para sistemas en red II Profesor: Julio César Meza Ramírez A continuación se presenta un ejemplo utilizando una agenda telefónica sencilla. Base de datos: create database agenda; use agenda; create table amigos (cod int not null, nombre char(10), apellido char(8), tel char(10), primary key(cod)); insert into amigos(cod,nombre,apellido,tel) values (1,'esteban','franco','8751193'); insert into amigos(cod,nombre,apellido,tel) values (2,'edwin','moreno','8977322'); insert into amigos(cod,nombre,apellido,tel) values (3,'fabian','gaviria','8568945'); Formulario de inicio en html (guardar como inicio.html): <html> <head> <title>inicio</title> </head> <body> <p>que desea hacer?:</p> <p><a href="insertar.html">agregar un nuevo amigo.</a></p> <p><a href="listar.php">ver la lista de amigos.</a></p> <p><a href="borrar.php">borrar a un amigo.</a></p> </body> </html> Programación para sistemas en red II Profesor: Julio César Meza Ramírez Formulario insertar en html (guardar como insertar.html): <html> <body> <form action="insertar.php" method="post"> <table border=1> <tr><td>Codigo</td><td>Nombre</td><td>Apellido</td><td>Telefono</td> </tr> <tr> <td><input type="text" name="c" size=3></td> <td><input type="text" name="n" size=10></td> <td><input type="text" name="a" size=10></td> <td><input type="text" name="t" size=10></td> </tr> <tr> <td colspan="4"><center><input type="submit" value="Guardar"></center></td> </tr> </table> </form> </body> </html> Ejecución de la inserción en PHP (guardar como insertar.php): <html> <body> <?php //tomo las variables enviadas desde el formulario html $c=$HTTP_POST_VARS['c']; $n=$HTTP_POST_VARS['n']; $a=$HTTP_POST_VARS['a']; $t=$HTTP_POST_VARS['t']; //establece la conexion con el servidor y la almacena en la variable conex $conex=mysql_connect("localhost","root","") or die ("no se pudo establecer la conexion"); //Selecciona la base de datos sobre la que se va a trabajar mysql_select_db("agenda",$conex); //preparo la consulta y la almaceno en forma de cadena en la varialbe m Programación para sistemas en red II Profesor: Julio César Meza Ramírez $m="insert into amigos(cod,nombre,apellido,tel) "; $m.="values($c,'$n','$a','$t');"; //ejecuta la consulta almacenada en la variable m sobre la conexion activa en la variable //conex $resultado=mysql_query($m,$conex); //libera los recursos asociados a la consulta SQL mysql_free_resul($resultado); //cierra la conexion con la base de datos mysql_close($conex); ?> </body> </html> Imprimir la lista de amigos (guardar como listar.php): <html> <body> <?php //conexion y consulta, estos pasos son similares a los de insertar.php $conex=mysql_connect("localhost","root","") or die ("no se pudo establecer la conexion"); mysql_select_db("agenda",$conex); $m="select * from amigos;"; $resultado=mysql_query($m,$conex); //devuelve el número de filas de la matriz devuelta en la consulta $num_filas=mysql_num_rows($resultado); //devuelve el número de atributos de la consulta $num_campos=mysql_num_fields($resultado); Programación para sistemas en red II Profesor: Julio César Meza Ramírez echo "<table border=1>"; echo "<tr><td>codigo</td><td>nombre</td><td>apellido</td><td>telefono</td></tr>"; //mientras la funcion mysql_fetch_row($resultado) retorne un valor positivo se ejecuta el //ciclo while($fila=mysql_fetch_row($resultado)) { echo "<tr>"; for($i=0;$i<$num_campos;$i++) { echo "<td>"; echo $fila[$i]; echo "</td>"; } echo "</tr>"; } echo "</table>"; //se liberan los recursos y se cierra la conexion mysql_free_resul($resultado); mysql_close($conex); ?> </body> </html> Formato para realizar el borrado de alguna tupla (guardar como borrar.php): <html> <body> <form action="borra.php" method="post"> <table border=1><tr><td>escriba el codigo</td> <td><input type="text" name="cod" size=5"><td><tr> <tr><td colspan="2"><input type="submit" value="borrar"></td></tr> </table> </form> <?php Programación para sistemas en red II Profesor: Julio César Meza Ramírez //imprime resultado $conex=mysql_connect("localhost","root","") or die ("no se pudo establecer la conexion"); mysql_select_db("agenda",$conex); $m="select * from amigos;"; $resultado=mysql_query($m,$conex); $num_filas=mysql_num_rows($resultado); $num_campos=mysql_num_fields($resultado); echo "<table border=1>"; echo "<tr><td>codigo</td><td>nombre</td><td>apellido</td><td>telefono</td></tr>"; while($fila=mysql_fetch_row($resultado)) { echo "<tr>"; for($i=0;$i<$num_campos;$i++) { echo "<td>"; echo $fila[$i]; echo "</td>"; } echo "</tr>"; } echo "</table>"; mysql_free_resul($resultado); mysql_close($conex); ?> </body> </html> Código para ejecutar el borrado (guardar como borra.php): <html> <body> <?php $cod=$HTTP_POST_VARS['cod']; //borrar registro $conex=mysql_connect("localhost","root","") or die ("no se pudo establecer la conexion"); mysql_select_db("agenda",$conex); $m="delete from amigos where $cod=amigos.cod;"; $resultado=mysql_query($m,$conex); mysql_free_resul($resultado); mysql_close($conex); Programación para sistemas en red II Profesor: Julio César Meza Ramírez ?> ?> </body> </html> Programación para sistemas en red II Profesor: Julio César Meza Ramírez