PHP y MySQL

Anuncio
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
Descargar