Download Guía_Conexión a Bases de Datos_PHP con MysQl_

Document related concepts
no text concepts found
Transcript
Conexión a Bases de Datos
MySQL desde PHP
Introducción.
E
l sistema de acceso y manipulación de
bases de datos desde PHP es similar al de
otros lenguajes de script: establece la
conexión con la base de datos, ejecuta las
sentencias de consulta o modificación y finalmente
cierra la conexión.
PHP soporta compatibilidad con accesos a múltiples
sistemas de bases de datos, sin embargo, el modo
de programación sobre cada tipo de base de datos,
no presenta, como en otros casos, la misma
nomenclatura. PHP utiliza funciones de nombre
genérico, pero precedidas normalmente por el
nombre del sistema de base de datos, de modo que
las funciones que ofrece el lenguaje para el acceso a
cada tipo de base de datos son diferentes.
Establecimiento de conexión con bases de datos MySQL
Para establecer la conexión con una base de datos MySQL desde PHP, se utiliza la función:
mysql_connect("NombreHost","Usuario","Contraseña")
cuyos parámetros son opcionales, e indican el nombre del servidor -o IP del mismo- (‘NombreHost’) donde se
encuentra la base de datos, el ‘Usuario’ de acceso a la base de datos, y la ‘Contraseña’ de acceso. En caso de
éxito la función devuelve un identificador del enlace con el sistema de bases de datos.
Una vez establecida la conexión, hay que indicar al sistema, la base de datos con la que se desea trabajar,
usando la función:
mysql_select_db("NombreBaseDatos")
Y finalmente, para cerrar la conexión utilizamos:
mysql_close($conexion)
donde debemos pasarle como parámetro el enlace con la conexión inicialmente establecida.
Ejemplo:
<?php
#Conectamos con MySQL
$conexion = mysql_connect("NombreHost","Usuario","Contraseña")
or die ("Fallo en el establecimiento de la conexión");
#Seleccionamos la base de datos a utilizar
mysql_select_db("NombreBaseDatos")
or die("Error en la selección de la base de datos");
# ################################### #
# Aquí insertaríamos las consultas sobre la base de datos #
# ################################### #
#Cerramos la conexión con la base de datos
mysql_close($conexion);
?>
Consultas Sobre Bases de Datos
MySQL
Para efectuar consultas sobre una base de datos MySQL, se utiliza en PHP la función:
mysql_query($sql, $conexion)
que toma como parámetros, una cadena con la consulta SQL a ejecutar (SELECT, INSERT, DELETE, etc.), y el
enlace con la base de datos (opcional). Devuelve un identificador del resultado en caso de éxito o FALSE en
caso de error en la consulta.
Solo con la ejecución de la consulta sobre la base de datos, no podemos presentar el resultado de la misma.
Para poder mostrar información resultante de una consulta deberemos hacer uso de funciones
complementarias. Una de las posibles es:
mysql_fetch_array($id_resultado)
que devuelve un array con el resultado de la sentencia extraída identificada por el parámetro facilitado.
Ejemplo:
<?php
#Conectamos con MySQL
$conexion = mysql_connect("NombreHost","Usuario","Contraseña")
or die ("Fallo en el establecimiento de la conexión");
#Seleccionamos la base de datos a utilizar
mysql_select_db("NombreBaseDatos")
or die("Error en la selección de la base de datos");
#Efectuamos la consulta SQL
$result = mysql_query ("select * from personal" )
or die("Error en la consulta SQL");
#Mostramos los resultados obtenidos
while( $row = mysql_fetch_array ( $result )) {
echo $row [ "id" ];
echo $row [ "nombre" ];
}
?>
Práctica 1
Necesitamos una Base de Datos llamada “basecurso”, con la siguiente tabla de MySQL:
CREATE TABLE tablacurso (
id integer(3) unsigned NOT NULL auto_increment,
nombre varchar(30) DEFAULT '0' ,
direccion varchar(30) DEFAULT '0' ,
telefono varchar(30) DEFAULT '0' ,
email varchar(30) DEFAULT '0' ,
imagen varchar(30) DEFAULT '0' ,
PRIMARY KEY (id)
);
Conectarse
Empecemos con el primer script, que nos mostrará como conectarnos a un base de datos (conectarse.php).
conectarse.php
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
function Conectarse(){
if (!($link=mysql_connect("localhost","usuario","password"))){
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("basecurso",$link)){
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
Conectarse();
echo "Conexión con la base de datos conseguida.<br>";
?>
</body>
</html>
Como podemos ver en el ejemplo anterior aislé lo necesario para la conexión en una función, ahora esa
función la pondremos en un archivo PHP solo (conec.php).
conec.php
<?php
function Conectarse(){
if (!($link=mysql_connect("localhost","usuario","password")))
{
exit();
}
if (!mysql_select_db("basecurso",$link)){
exit();
}
return $link;
}
?>
Ya que tenemos la función en un archivo separado solo hay que mandarlo llamar cuando sea
necesario, de esta forma cuando tengamos aplicaciones complejas que use muchas páginas php y sea
necesario cambiarle algo a la conexión solo se le tenga que hacer el cambio a este pequeño archivo y no a
todas las páginas.
Agregar registros
Veremos un ejemplo de agregar registros a la base de datos (insertareg.php y agregar.php).
insertareg.php
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<h1>Ejemplo de uso de bases de datos con PHP y MySQL</h1>
<form action="agregar.php" method="post">
<TABLE>
<tr>
<td>Nombre:</td>
<td><input type="text" name="nombre" size="20" maxlength="30"></td>
</tr>
<tr>
<td>Direccion:</td>
<td><input type="text" name="direccion" size="20" maxlength="30"></td>
</tr>
<tr>
<td>Telefono:</td>
<td><input type="text" name="telefono" size="20" maxlength="30"></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="email" size="20" maxlength="30"></td>
</tr>
<tr>
<td>Imagen:</td>
<td><input type="text" name="imagen" size="20" maxlength="30"></td>
</tr>
</TABLE>
<input type="submit" name="accion" value="Grabar">
</FORM>
<hr>
<?php
include("conec.php");
$link=Conectarse();
$result=mysql_query("select * from tablacurso",$link);
?>
<table border="1" cellspacing="1" cellpadding="1">
<tr>
<td>&nbsp;Nombre</td>
<td>&nbsp;Dirección&nbsp;</td>
<td>&nbsp;Telefono&nbsp;</td>
<td>&nbsp;Email&nbsp;</td>
<td>&nbsp;Imagen&nbsp;</td>
</tr>
<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td> &nbsp;%s </td><td> &nbsp;%s&nbsp; </td><td> &nbsp;%s&nbsp;
</td><td> &nbsp;%s&nbsp; </td><td> &nbsp; <imgsrc=%s> &nbsp; </td></tr>",
$row["nombre"], $row["direccion"], $row["telefono"], $row["email"],
$row["imagen"]);
}
mysql_free_result($result);
?>
</table>
</body>
</html>
agregar.php
<?php
include("conec.php");
$link=Conectarse();
$Sql="insert into tablacurso (nombre,direccion,telefono,email,imagen)
values
('".$_POST["nombre"]."','".$_POST["direccion"]."', '".$_POST["telefono"]."',
'".$_POST["email"]."', '".$_POST["imagen"]."')";
mysql_query($Sql,$link);
header("Location: insertareg.php");
?>
Modificar registros
Veremos un ejemplo de modificar registros a la base de datos, consta de tres archivos diferentes, el
primero para introducir la consulta por el campo nombre, el segundo para realizar los cambios necesarios y el
tercero para modificar la base de datos (consulta.htm, busca.php y modifica.php).
consulta.htm
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<h1>Ejemplo de modificar</h1>
<form action="busca.php" method="post">
Nombre:
<input type="text" name="nombre" size="20" maxlength="30">
<input type="submit" name="accion" value="Buscar">
</FORM>
</body>
</html>
busca.php
<html>
<body>
<?php
include("conec.php");
$link=Conectarse();
$Sql="select * from tablacurso where nombre like '%."$_POST["nombre"]."%'";
$result=mysql_query($Sql,$link);
?>
<table border="1" cellspacing="1" cellpadding="1">
<tr>
<td>&nbsp;Nombre</td>
<td>&nbsp;Dirección&nbsp;</td>
<td>&nbsp;Telefono&nbsp;</td>
<td>&nbsp;Email&nbsp;</td>
<td>&nbsp;Imagen&nbsp;</td>
</tr>
<form name="form1" method="post" action="modifica.php">
<?php
while($row = mysql_fetch_array($result))
{
printf("<tr><td><INPUT TYPE='text' NAME='nombre' SIZE='20' MAXLENGTH='30'
value='%s'></td><td>&nbsp;<INPUT TYPE='text' NAME='direccion' SIZE='20'
MAXLENGTH='30' value='%s'>&nbsp;</td><td>&nbsp;<INPUT TYPE='text' NAME='telefono'
SIZE='20' MAXLENGTH='30' value='%s'>&nbsp;</td><td>&nbsp;<INPUT TYPE='text'
NAME='email' SIZE='20' MAXLENGTH='30' value='%s'>&nbsp;</td><td>&nbsp;<INPUT
TYPE='text' NAME='imagen' SIZE='20' MAXLENGTH='30' value='%s'>&nbsp;</td></tr>",
$row["nombre"],$row["direccion"],$row["telefono"],$row["email"],$row["imagen"]);
}
mysql_free_result($result);
?>
<input type="submit" name="accion" value="Guardar">
</form>
</body>
</html>
modifica.php
<?php
include("conec.php");
$link=Conectarse();
$Sql="UPDATE tablacurso SET nombre='".$_POST["nombre"]."',
direccion='".$_POST["direccion"]."', email='".$_POST["email"]."',
telefono='".$_POST["telefono"]."' imagen='".$_POST["imagen"]."' WHERE
nombre='".$_POST["nombre"]."'";
mysql_query($Sql,$link);
header("Location: consulta.htm");
?>
Eliminar registros
Pasemos a la eliminación de registros, este consta de dos archivos, los dos .php el primero es para
elegir el registros a borrar y el segundo lo borra (eliminareg.php y borra.php).
eliminareg.php
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<h1>Ejemplo de uso de bases de datos con PHP y MySQL</h1>
<?php
include("conec.php");
$link=Conectarse();
$result=mysql_query("select * from tablacurso",$link);
?>
<table border="1" cellspacing="1" cellpadding="1">
<tr>
<td>&nbsp;Nombre</td>
<td>&nbsp;Dirección&nbsp;</td>
<td>&nbsp;Telefono&nbsp;</td>
<td>&nbsp;Email&nbsp;</td>
<td>&nbsp;Imagen&nbsp;</td>
<td>&nbsp;Borra&nbsp;</td>
</tr>
<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td> &nbsp;%s </td><td> &nbsp;%s&nbsp; </td><td> &nbsp;%s&nbsp;
</td><td> &nbsp;%s&nbsp; </td><td> &nbsp;%s&nbsp; </td></td><td> <a
href=\"borra.php?id=%d\"> Borra </a></td></tr>", $row["nombre"],
$row["direccion"], $row["telefono"], $row["email"], $row["imagen"], $row["ID"]);
}
mysql_free_result($result);
?>
</table>
</body>
</html>
borra.php
<?php
include("conec.php");
$link=Conectarse();
mysql_query("delete from tablacurso where ID = ".$_GET["id"],$link);
header("Location: eliminareg.php");
?>
Conclusiones.
Ya conocemos como manejar una base de datos de MySQL con PHP, pero que pasa si nosotros tenemos
nuestra base de datos en Microsoft Access y es una base de datos enorme, que nos llevaría mucho tiempo en
convertirla en MySQL, existe una solución para poder usarla en PHP, esta opción es ODBC.