Sei sulla pagina 1di 17

Unidad 5.

PHP y MySQL
5.1 Conexin a Base de Datos desde PHP.
PHP incluye juegos de instrucciones para accesar diferentes gestores de bases de datos. Al accesar una
base de datos desde PHP es necesario autentificarse con la misma abriendo una conexin con una
cuenta y contrasea autorizadas
Instrucciones de conexin.
Abrir una conexin.
La instruccin Mysql_connect establece una conexin a un servidor de MySQL. Un identificador de
conexin, o FALSE en caso de error. El identificador nos permite referenciar a la conexin establecida. La
sintaxis es la siguiente:
Identificador = Mysql_connect(servidor, usuario, contrasea)
Ejemplo:
$conexion = mysql_connect ("localhost", "root", "root") or die ("No puedo conectarme a la base
de datos.");
En caso de realizar una segunda llamada a mysql_connect con los mismos argumentos, no se
establecer ninguna nueva conexin, sino se devolver el identificador de conexin de la ya existente.

Finalizar una conexin.


La conexin al servidor se cerrar en cuanto la ejecucin del script acabe, a menos que la cerremos
antes con la funcin mysql_close.
Mysql_close cierra la conexin a la base de datos MySQL asociada al identificador de conexin
especificado. Si no se e especifica un identificador de conexin, se asume el de la ltima conexin
abierta.
La sintaxis es:
mysql_close(nombre_conexion);

Ejemplo. Para cerrar la conexin que se estableci en la instruccin anterior seria:

$x= mysql_close($conexion);
if ($x)
echo "El cierre con la BD es correcto";
La funcin anterior devuelve TRUE si se ha cerrado correctamente, FALSE en caso de error.
Seleccin de la base de datos.
Despus de realizar una conexion al servidor MySQL, hay que seleccionar la base de datos que se va a
utilizar. Lo anterior se realiza con la instruccin mysql_select_db. La sintaxis es:
int mysql_select_db(string database_name, int [link_identifier] );
Devuelve true si encontr la base de datos, false si existi un error. Si no se especifica identificador de
conexin se utiliza la ltima conexin abierta.
Ejemplo:
En el modulo anterior se creo en MySql una base de datos llamada zoolgico, para que desde un script
de PHP se pueda utilizar la base de datos, la instruccin ser:
mysql_select_db("mascotas");
mysql_select_db("mascotas",$conexion);
Ejemplo No. Establecer la conexin al servidor y seleccin de base de datos.
<?php
$conexion = mysql_connect ("localhost", "", "") or die ("No puedo conectarme a la base de datos.");
$resultado = mysql_select_db("zoologico");
if ($resultado == true)
echo La conexin fue exitosa;
else
echo Error en la conexin con la base de datos;
mysql_close($conexion);
?>

5.2 Insercin de registros desde PHP


Para establecer una instruccin SQL a la base de datos desde PHP, se utiliza el comando Mysql_query,
las instrucciones INSERT, DELETE y UPDATE siguen la misma sintaxis de SQL, que se planteo en el
modulo anterior.
La sintaxis de la instruccin Mysql_query es:
mysql_query(estatuto_sql, conexin)
El estatuto SQL, es cualquier comando SQL que se desee aplicar a la conexin y ejecuta una consulta a
la base de datos activa en el servidor asociado al identificador de conexin. Si no se especifica conexion,
se utiliza la ltima conexin abierta. Si no hay conexiones abiertas la funcin intenta establecer una.
Esta funcin devuelve TRUE o FALSE para indicar si las operaciones UPDATE, INSERT o DELETE han
tenido xito. Para la operacin SELECT devuelve un nuevo identificador de resultado.
Ejemplo para insertar registros.
Supngase que se desea insertar un nuevo registro a la tabla mascotas, los valores son:
Nombre

Propietario

Especie

Sexo

Nacimiento

Blas

Arnoldo

Perro

2006-03-05

El script de PHP ser como el siguiente:


<html>
<body>
<?php
$conexion = mysql_connect("localhost", "", );
mysql_select_db("zoologico);
$sql = "INSERT INTO mascotas(nombre, propietario, especie, sexo, nacimiento) values (Blas,
Arnoldo, Perro, m, 2006-03-05) ";
$x= mysql_query($sql,$conexion);
if ($x)
{
echo "\"Insercin 'Correcta'\n\"";
echo ' a la "Base de \'Datos\'"';
}
?>
</body>
</html>

La instruccin insert, se estableci en una variable, pero tambin se pudo haber establecido directamente
en la instruccin mysql_query, como se muestra a continuacin:
mysql_query("INSERT INTO mascotas(nombre, propietario, especie, sexo, nacimiento) values
(Blas, Arnoldo, Perro, m, 2006-03-05) ",$conexion);
Utilizacin de formularios.
Supngase que se desea que el usuario capture los datos de la mascota que se desea insertar como
nueva. El formulario HTML ser como se muestra en la siguiente figura:

El cdigo HTML es el siguiente:


<HTML>
<BODY>
<FORM ACTION=Insertar.php Method=POST>
Nombre : <input type=text name=nombre><br>
Propietario: <input type = text name=prop><br>
Especie: <select name=especie>
<option value=Perro>Perro
<option value=Gato>Perro
<option value=Ave>Perro
<option value=Serpiente>Perro
<option value=Otro>Otro
</select><br>
Sexo: <input type=radio value=M name=sexo>Masculino
<input type=radio value=F name=sexo>Femenino<br>
Fecha de Nacimiento : <input type = text name=fecha><br>

<input type=submit value=Insertar Datos><input type=reset value=Cancelar>


</form>
</BODY>
</HTML>

El script Insertar.php, correspondiente a la insercin de los elementos recuperados del formulario ser:
<?php
$conexion = mysql_connect ("localhost", "", "") or die ("No puedo conectarme a la base de datos.");
$resultado = mysql_select_db("zoologico");
if ($resultado == true)
echo "La conexin fue exitosa";
else
echo "Error en la conexin con la base de datos";

//Recuperacin de los valores del formulario.


$nombre = $_POST['nombre'];
$propietario = $_POST['prop'];
$especie =$_POST['especie'];
$sexo = $_POST['sexo'];
$nacimiento = $_POST['fecha'];

$sql = "INSERT INTO mascotas(nombre, propietario, especie, sexo, nacimiento) values ('$nombre',
'$propietario', '$especie', '$sexo', '$nacimiento')";
echo $sql;

mysql_query($sql,$conexion);
echo "Insercin Correcta\n";
?>
Observa que los valores constantes, se sustituyen por las variables que contengan los datos recuperados
del formulario.
Si se han ejecutado los scripts anteriores, y desde el prompt de mysql, se ejecuta una consulta. El
contenido de la tabla ser como se muestra en la figura siguiente:

5.3 Eliminacin de registros desde PHP.


Para eliminar registros se utiliza el mismo comando para realizar la insercin: mysql_query. El comando
DELETE del SQL trabaja con la misma sintaxis vista en el modulo anterior.
Ejemplo de eliminacin.
Considerando la misma base de datos zoolgico, supngase que se desea eliminar todas las mascotas
que sean Serpientes. El script php ser el siguiente:
<html>
<body>
<?php
$conexion = mysql_connect("localhost", "", );
mysql_select_db("zoologico);
$sql = "DELETE FROM mascotas WHERE especie = Serpiente ";
mysql_query($sql,$conexion);
echo "Eliminacin Exitosa!";
?>
</body>
</html>

Utilizacin de formularios.
Supngase que existe un formulario que recupere el valor de la especie que se desee eliminar. Los
cdigos correspondientes sern los siguientes:
formulario HTML.
<HTML>
<BODY>
<FORM ACTION="Eliminar.php" Method="POST">
<h2>Eliminacin de Registros </h2>
Especie: <select name=especie>
<option value="Perro">Perro

<option value="Gato">Gato
<option value="Ave">Ave
<option value="Serpiente">Serpiente
<option value="Otro">Otro
</select><br><br><br>
<input type=submit value="Eliminar Especie"><input type=reset value="Cancelar">
</form>
</BODY>
</HTML>

El script PHP sera:


<html>
<body>
<?php
$conexion = mysql_connect("localhost", "", );
mysql_select_db("zoologico);
if (isset($especie)) //Verifica la existencia de un datos..
{
// Recuperaron de datos del formulario
$especie =$_POST[especie];
$sql = "DELETE FROM mascotas WHERE especie = $especie ";
mysql_query($sql,$conexion);
echo "Eliminacin Exitosa!";
}
else
{
echo "Se debe seleccionar una especie";
}
?>
</body>
</html>

La funcin isset verifica si el usuario ha capturado o elegido el campo correspondiente.


Si se han ejecutado los scripts anteriores, y desde el prompt de mysql, se ejecuta una consulta. El
contenido de la tabla ser como se muestra en la figura siguiente:
Suponiendo que se eligio Ave y Gato en el formulario al ser ejecutado.

5.4 Actualizacin de registros desde PHP


El comando mysql_query permite modificar un registro desde un script de PHP utilizando la instruccin
UPDATE de SQL.

Ejemplo de Modificaron de registros.


Considerando la base de datos zoolgico que hemos estado trabajando supongamos que se desea
modificar la fecha de nacimiento del registro de FanFan a 2005-03-05. El script php ser:

<html>
<body>
<?php
$conexion = mysql_connect("localhost", "", );
mysql_select_db("zoologico);
$sql = "UPDATE mascotas SET nacimiento = 2005-03-05 where nombre =Fan Fan ";
mysql_query($sql,$conexion);
echo "Modificacin Correcta!\n";
?>
</body>
</html>

Utilizacin de formularios.
S se desea solicitar los datos que se vana modificar desde un formulario es importante recuperar la
informacin del usuario verificar la existencia de la misma y mostrarle al usuario los datos
correspondientes del registro a modificar.
El cdigo del formulario es el siguiente:
<HTML>
<BODY>
<FORM ACTION="Modificar.php" Method="POST">
<h2>Modificacin de registros </h2>
Nombre de la especie a modificar: <input type=text name="nombre"><br>
Fecha de nacimiento correcta: <input type=text name="fecha"><br><br><br>
<input type=submit value="Modificar Datos"><input type=reset value="Cancelar">
</form>
</BODY>
</HTML>

El script PHP debe recuperar el dato capturado y realizar la actualizacin, tal como se muestra a
continuacin:

<html>
<body>
<?php
$conexion = mysql_connect("localhost", "", );
mysql_select_db("zoologico);
if (isset($nombre) && isset($fecha))
{
// Recuperaron de datos del formulario
$especie =$_POST[especie];
$fecha =$_POST[fecha];
$sql = "UPDATE mascotas SET nacimiento = $fecha where nombre =$especie ";
mysql_query($sql,$conexion);
echo "Modificacin Exitosa!";
}
else
{
echo "Se debe escribir un nombre y una fecha";
}
?>
</body>
</html>

Si se han ejecutado los scripts anteriores, y desde el prompt de mysql, se ejecuta una consulta. El
contenido de la tabla ser como se muestra en la figura siguiente:

En el tema siguiente se va a mostrar como podemos visualizar la informacin de los datos antes de
eliminar o modificar.
5.5 Consultas desde PHP
Una consulta consiste en extraer de una tabla o un conjunto de tablas registros que satisfagan ciertas
condiciones.
Cuando se genera una consulta el conjunto de registros extrados de la tabla forma un recordset. La
instruccin a utilizar en el script PHP es la misma que se ha manejado anteriormente pero esta debe estar
asignada a la variable que ser el recordset. La instruccin SELECT es la correspondiente de SQL para
la extraccin de registros.
La sintaxis de una consulta es:
$query = mysql_query("select . ", $conexion);
Donde $query representa a la variable de tipo recordset.

Supongamos la siguiente consulta:


SELECT * FROM mascotas;

El recordset es el conjunto de registros retornados por la consulta y contendr los siguientes valores:

nombre

propietario

especie

sexo

nacimiento

Fluffy

Arnoldo

Gato

1999-02-04

Buffy

Arnoldo

Perro

1999-05-13

FanFan

Benito

Perro

2000-08-27

Chispa

Omar

Ave

1998-09-11

Skim

Benito

Serpiente

NULL

Para obtener cada uno de los renglones del recordset se utiliza el comando mysql_fetch_array
Este comando devuelve un tabla 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. La sintaxis del comando es la siguiente:
$arreglo = mysql_fetch_array(identificador_consulta)
Donde $arreglo tendr una sola fila de la consulta ejecutada.
Fluffy

Arnoldo

Gato

1999-02-04

Cada columna encontrada utiliza una posicin en el arreglo, iniciando desde el cero.
Ejemplo: Visualizar los registros de la tabla mascotas.
<center>
<?php
$conexion = mysql_connect ("localhost", "", "") or die ("No puedo conectarme a la base de datos.");
mysql_select_db("zoologico");
echo <<< HTML
<table border=1>

<tr><td><B>Matricula</B></td><td><B>Nombres</B></td>
<td><B>Apellido Paterno</B></td><td><B>Apellido Materno</B></td></tr>
HTML;
$query = mysql_query("select * from mascotas", $conexion);
while($renglon = mysql_fetch_array($query))
{
echo "<tr>";
for ($i=0; $i<5; $i++) echo "<td>$renglon[$i]</td>";
echo "</tr>";
}
echo "</table><br>";
mysql_close($conexion);
?>
</center>

El resultado de la consulta anterior se muestra en la siguiente figura

Se puede aadir cdigo HTML dentro de PHP sin necesidad de utilizar el comando echo tal como se
muestra a continuacin encerrando el cdigo HTML entre los valores que se indican en negrita.
.
echo <<< HTML
<table border=1>
<tr><td><B>Matricula</B></td><td><B>Nombres</B></td>
<td><B>Apellido Paterno</B></td><td><B>Apellido Materno</B></td></tr>
HTML;

Para hacer que se recorra todo el recorsdet se utiliza el ciclo while con el comando mysql_fetch_array ya
que no se conoce cuantos registros fueron extrados
Otra forma de extraer cada uno de los valores es:

<html>
<body>
<?php
$conexion = mysql_connect ("localhost", "", "") or die ("No puedo conectarme a la base de datos.");

mysql_select_db("zoologico");
$result = mysql_query("SELECT * FROM mascotas", $conexion);
echo "<b>Nombre: </b>" . mysql_result($result, 0, "nombre") . "<br>";
echo "<b>Propietario: </b> " . mysql_result($result, 0, "propietario") . "<br>";
echo "<b>Especie </b>:" . mysql_result($result, 0, "especie") . "<br>";
echo "<b>Sexo :</b>" . mysql_result($result, 0, "sexo") . "<br>";
echo "<b>Nacimiento :</b>" . mysql_result($result, 0, "nacimiento") . "<br>";
?>
</body>
</html>

mysql_result() es usado para mostrar los valores de los campos devueltos por la consulta ($result). En
este ejemplo mostramos los valores del registro 0, que es el primer registro, y mostramos el valor de los
campos especificados.
El resultado de la ejecucin del script anterior se muestra en la siguiente figura:

Potrebbero piacerti anche