| Regresar | Temario | Ing. Angel Castro (UNAM - DGSCA Centro Coapa) |
Acceso a base de datos con MySQL
PHP consta de grupos de funciones para poder interactuar con diferentes gestores de bases de datos, especificamente nos enfocaremos a como conectarnos y realizar queries con MySQL.
Para poder utilizar MySQL el demonio de mysqld debe estar corriendo, en el caso de usar phptriad, por favor ejecute "Start MySQL" que esta dentro de Programs.
La funcion para conectarnos a mysql es:
mysql_connect($hostname,$user,$password)
donde
He aqui un pequeño ejemplo de como conectarse
$
<?php
$hostname="localhost";
$login="paul":
$password="jones2001";
$db=mysql_connect($hostname,$login,$password) or die ("No pude conectarme
a MySQL");
?>
Este ejemplo muestra una simple conexion a MySQL y podemos utilizar la funcion die para parar la ejecucion del programa en el caso de un error fatal como en este caso. $db contendra entonces el "apuntador" a la base de datos que sera utilizado en algunas funciones posteriores.
Despues de concetar a MySQL debemos indicarle que base de datos vamos a utilizar (ya que podemos tener varias), esto lo hacemos con mysql_select_db de la siguiente forma:
mysql_select_db($database);
donde $database es el nombre de la base de datos.
Recuerde que de acuerdo a los permisos que tenga el usuario podra mandar un mensaje de error desde que se conecta a la base de datos, cuando seleccionamos la base de datos a utilizar, o cuando ejecutamos algun query, para estos casos utilizamos el signo @ para que no despliege ningun error y asi controlar los errores y volver el sript un poco mas seguro para los crackers.
Ahora que ya estamos conectados a la base de datos y seleccionamos la que vamos a utilizar, ya podemos realizar queries, esto se hace de la siguiente manera:
$result = mysql_query($query);
donde $query es la cadena que contiene el query utlizando SQL, $result es un apuntador a la tabla que regreso ese query, hasta el momento aun no hemos obtenido ningun dato de MySQL solo estamos preparando todo para obtenerlos, y para este caso se utiliza cualquiera de las siguientes 3 funciones que se explicaran una a una la diferencia.
Principalmente estas funciones obtienen una tupla de los resultados obtenidos a travez de un query. Una tupla es un renglon de datos.
Vamos a ver un ejemplo completo de como obtener datos.
<?php
<?php
$host="localhost";
$login="paul43";
$passw="jones2001";
$db=mysql_connect($host,$login,$password)
or die ("No pude conectarme a la base de datos");
mysql_select_db("personal")
or die ("No puedo acceder a la base de datos personal");
$query="SELECT * FROM empleados";
$result=mysql_query($query);
$numrows=mysql_num_rows($result);
//Impresion en pantalla de datos
while ($datos=mysql_fetch_array($result))
{
echo $datos["Nombre"], " - ", $datos["Direccion"]
,"<BR>" ;
}
print "Numero de registros impresos $numrows<br>";
?>
Explico lo que pasa en este script. Primero nos conectamos con mysql_connect
y si no se puede conectar por x razon nos manda un error, igual pasa cuando
seleccionamos la base de datos con my_select_db.
Despues metemos el query (en este caso un simple query) a una variable llamda
$query, posteriormente utilizamos mysql_query para hacer el query a MySQL y
guardamos el apuntador a estos resultados en una varible llamada $result, despues
de esto hay una funcion que no hemos visto que es mysql_num_rows que nos indica
cuantos renglones hay en mysql_query.
Al ultimo metemos un loop que escriba todos los renglones que haya regresado
el query, observe que la funcion mysql_fetch_array esta dentro del while, ya
que esta funcion regresa falso cuando se ha terminado o llegado al ultimo renglon
(y cuando envia falso termina el while).
Entonces con mysql_fetch_array regresa un array asociativo de la forma como
lo estamos mandando imprimir es la mas correcta ya que si intentamos imprimirlo
con un print se encontraria con el problema de que tiene que "escapar"
las comillas y comillas escapadas para arrays asociativos no funciona.
Por ultimo mandamos a imprimir cuantos renglones se obtuvieron.