Вы находитесь на странице: 1из 6

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

Conexin con MYSQL desde PHP

Apertura de la conexin
La funcin que permite la conexin con el servidor es: mysql_connect (servidor, usuario, contrasea) Los tres parmetros anteriores permiten identificar el servidor sobre el que est instalado MySQL, y el nombre de usuario y contrasea necesarios para conectarse. Estos dos ltimos datos deben coincidir con los de un usuario registrado en MySQL. Cuando el servidor MySQL y el servidor web se encuentran en el mismo equipo la identificacin del servidor para realizar la conexin es localhost; en este caso adems, este parmetro sera opcional en la funcin mysql_connect(), ya que precisamente el valor por defecto es localhost. La funcin mysql_connect() devuelve un valor entero que se utilizar como identificador de la conexin en las operaciones posteriores. Si se produce un error en la conexin, el valor devuelto por la funcin ser 0.

Cierre de la conexin
La conexin realizada se cierra automticamente al terminar la ejecucin del script en el que se ha establecido, o bien explcitamente con la funcin mysql_close(). Esta funcin recibe como nico argumento el identificador de la conexin: mysql_close (identificador) El identificador de la conexin en la funcin mysql_close() es opcional, en caso de que no se indique se cerrar la ltima conexin abierta. La funcin mysql_close() devuelve un valor entero que ser nulo en el caso de que se produzca algn error en el proceso.

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

De esta manera, el esquema general de un programa que realiza conectividad con MySQL sera: $conexion = mysql_connect(localhost, root, die("Error en la conexin: " .mysql_error()); mysql_close($conexion); miclave) or

En primer lugar se realiza la conexin con el servidor local y utilizando como nombre de usuario root y contrasea miclave. Se asigna el identificador de la conexin a la variable $conexion, y se comprueba si su valor es distinto de cero. Si la variable $conexion toma el valor nulo se deber a un error de conexin, por tanto se utiliza la funcin die() para mostrar el correspondiente aviso de error y abortar la ejecucin del resto del programa. Si la conexin se estableci satisfactoriamente, se continuar la ejecucin del programa y finalmente, se cerrar la conexin. En el caso de no utilizar la funcin mysql_close(), cualquier conexin realizada con mysql_connect() se cerrar automticamente al finalizar la ejecucin del script. No obstante, si se desea que la conexin permanezca abierta para ser utilizada en programas de otras pginas que se ejecuten posteriormente, puede utilizarse una funcin alternativa para la apertura: mysql_pconnect (servidor, usuario, contrasea) La sintaxis de esta funcin es idntica a la de la funcin mysql_connect(). Este tipo de conexiones que no se cierran automticamente se denominan conexiones persistentes. El cierre de las conexiones persistentes debe realizarse con una funcin especial: mysql_pclose (identificador)

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

Seleccin de la base de datos


La funcin que permite seleccionar una base de datos es: mysql_select_db (nombreBD, identificador) El primer parmetro ser el nombre de la base de datos a seleccionar y el segundo el identificador de la conexin. Este segundo parmetro es opcional, en caso de no indicarse, se considerar la ltima conexin realizada. De nuevo, como en todas las funciones de conexin, si se produce un error, por ejemplo, porque la base de datos no existe, la funcin mysql_select_db() devolver el valor 0. El valor devuelto por la funcin puede utilizarse en estructuras condicionales para asegurar que las operaciones posteriores se realizan nicamente si la seleccin ha sido exitosa. $conexion = mysql_connect(localhost, root, die("Error en la conexin: " .mysql_error()); miclave) or

$bd = mysql_select_db (videoteca, $conexion) or die("Error en la seleccin de la base de datos: " .mysql_error()); Una vez seleccionada la base de datos, esta pasa a ser la base de datos activa, y cualquier operacin posterior se dirigir a ella. En cualquier momento, mientras la conexin permanezca abierta, puede cambiarse la seleccin de la base de datos activa con una nueva llamada a la funcin mysql_select_db().

Ejecucin de sentencias SQL sobre la base de datos seleccionada


La funcin mysql_query() permite ejecutar cualquier sentencia SQL sobre la base de datos activa. Esta funcin admite dos argumentos, el primero es una cadena de caracteres con el cdigo SQL de la consulta a realizar; el segundo argumento ser el identificador de la conexin. Este segundo argumento es opcional y, de nuevo, en caso de no indicarse se asume la ltima conexin establecida. mysql_query (sentencia, identificador) Esta funcin devuelve 0 o FALSE si se produce algn error o un nmero entero positivo o TRUE en caso de ejecucin correcta. Un valor TRUE significa que la sentencia es correcta y pudo ser ejecutada en el servidor. No indica nada sobre el nmero de filas devueltas. Es perfectamente posible que la sentencia se ejecute correctamente pero que no devuelva ninguna fila. $consulta = "SELECT * FROM genero"; $resultado = mysql_query($consulta, $conexion) or die("Error en la consulta de seleccin: " .mysql_error()); En las sentencias de seleccin, este valor devuelto se utilizar posteriormente para acceder al resultado de la consulta. En el caso de sentencias de creacin, insercin, eliminacin o actualizacin, este valor devuelto nicamente sirve para comprobar si la sentencia se ejecut correctamente.

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

Existe otra funcin similar que permite ejecutar sentencias sobre cualquier base de datos, en este caso debe indicarse adems de la sentencia y el identificador de conexin, el nombre de la base de datos a la que se dirige la consulta: mysql_db_query (nombreBD, sentencia, identificador)

Recuperacin de los resultados de las consultas


Determinadas consultas de SQL, como las de insercin, borrado o actualizacin, realizan acciones sobre los datos de la base de datos pero no devuelven ninguna informacin, simplemente realizan esa accin. En cambio, las consultas de seleccin (SELECT) deben devolver un conjunto de registros como consecuencia de su realizacin. La ejecucin de la sentencia de seleccin se realiza, como con cualquier otra sentencia, mediante la funcin mysql_query(); una vez ejecutada, el resultado se almacena en una zona de la memoria mediante un tipo especial de estructura de datos conocida como recurso y que en PHP se utiliza para referenciar ciertos recursos externos. Para identificar esa zona de memoria y poder acceder a los datos, se debe utilizar el valor entero que devuelve la funcin mysql_query(). Para acceder a los resultados de la consulta puede utilizarse la funcin: mysql_fetch_row (resultado) Cada vez que se produce la llamada a esta funcin se genera un array con los valores de una de las filas de la tabla de resultados. Mediante un bucle de llamadas sucesivas se podrn recorrer todas las filas que constituyen el resultado. Cuando no hay ms filas por leer, la funcin devuelve un valor nulo que puede ser utilizado como indicador de finalizacin del bucle. Tambin es posible saber cuntas filas o registros incluye el resultado de la consulta. Para ello se puede utilizar la funcin: mysql_num_rows (resultado) Esta funcin devuelve un valor entero indicando el nmero de filas del resultado. El valor del argumento en ambas funciones es el entero devuelto por la funcin mysql_query() para identificar al recurso resultado.

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

Relacionada con esta ltima funcin est la funcin: mysql_affected_rows() Que devuelve el nmero de registros que se han visto afectados por la ltima consulta realizada de insercin, actualizacin o borrado. Una versin extendida de mysql_fetch_row() es mysql_fetch_array() mysql_fetch_array (resultado [, int tipo_de_resultado]) Devuelve una matriz que corresponde a la sentencia extrada, o falso si no quedan ms filas. Adems de guardar los datos en el ndice numrico de la matriz, guarda tambin los datos en los ndices asociativos, usando el nombre de campo como clave. Si dos o ms columnas del resultado tienen el mismo nombre de campo, la ltima columna toma la prioridad. Para acceder a la(s) otra(s) columna(s) con el mismo nombre, se debe especificar el ndice numrico o definir un alias para la columna.

ASIX Mdulo 9

UF 1: Lenguaje de guin de servidor

Ejemplo videoteca.php: <?php $servidor="localhost"; $usuario="usuario"; $password="php"; $base="videoteca"; $conexion = mysql_connect($servidor,$usuario,$password) or die("Error en la conexin: " .mysql_error()); mysql_select_db($base,$conexion) or die("Error en la seleccin: " .mysql_error()); $consulta = "SELECT * FROM genero"; $resultado = mysql_query($consulta,$conexion) or die("Error en la consulta de seleccin: " .mysql_error()); if (mysql_num_rows($resultado) == 0){ echo ("No hay datos en la tabla"); mysql_close($conexion); exit(); } else{

?> <h2>Datos de la videoteca</h2> <table border="1" width="200" height="150"> <tr bgcolor="gray"> <th>Id</th> <th>Nombre</th> <th>Descripcin</th> </tr> <?php while($fila = mysql_fetch_array($resultado)){ echo "<tr>"; echo "<td>". $fila["id"]."</td>"; echo "<td>". $fila["nombre"] ."</td>"; echo "<td>". $fila["descripcion"] ."</td>"; echo "</tr>"; } ?> </table> <?php }//Cierre del else //Liberamos la memoria del resultado de la consulta mysql_free_result($resultado); //Cerramos la conexin mysql_close($conexion); ?>

Вам также может понравиться