IN3501 – Tecnologías de Información y Comunicaciones para la Gestión Primavera 2009 Primavera 2009 PHP + MySQL PHP MySQL Universidad de Chile Departamento de Ingeniería Industrial Auxiliares: ( @ ) Iván Videla ([email protected]) Claudio Millán ([email protected]) 1 Conectándonos al Motor de Base de Datos Conectándonos al Motor de Base de Datos mysql_connect(servername,username,password); o o o servername: Especifica el servidor al cual nos conectaremos Username: Especifica el nombre de usuaria (en el servidor) que ocuparemos, por defecto ocupa el de dueño del proceso. ocuparemos, por defecto ocupa el de dueño del proceso. Password: Por defecto “”. Ej Ejemplo: l mysql_connect(‘localhost’,’root’,’’); IN3501 – TICs para la Gestión – Primavera 2009 2 Cerrando una conexión Cerrando una conexión Al igual que cuando se abria un archivo, ahora se tiene que cerrar la conexión. Ej Ejemplo: l <?php $link = mysql_connect('localhost', ’user', ’password'); iff (!$link) (!$l k) { die('Could not connect: ' . mysql_error()); } echo 'Connected Connected successfully successfully';; mysql_close($link); ?> IN3501 – TICs para la Gestión – Primavera 2009 3 Seleccionando Base de datos Seleccionando Base de datos Donde estamos? mysql_select_db (database_name , conecction ) o o Database_name: Es el nombre de la base de datos que queremos seleccionar Conecction: Es la conexión por donde mandar la instrucción Conecction: Es la conexión por donde mandar la instrucción. Ejemplo: $db_selected $db selected = mysql_select_db( mysql select db(‘rentavideo', rentavideo , $link); if (!$db_selected) { die ('Can\'t use rentavideo : ' . mysql_error()); } IN3501 – TICs para la Gestión – Primavera 2009 4 Como seleccionamos datos? Como seleccionamos datos? Con el comando, mysql , y q _q queryy (q (query , conexion ) y, ) o o Query: Es la consulta de SQL que se quiere realziar. Conexion: Es la conexion por donde amndar la instruccion. Ejemplo: $query = "SELECT firstname, lastname FROM friends“ $resultado = mysql_query($query); IN3501 – TICs para la Gestión – Primavera 2009 5 Seleccionando datos Seleccionando datos if (!$resultado) { $error = ‘Error: ' . mysql_error() . "\n"; die($error); while ($row = mysql_fetch_assoc($resultado)) { echo $row['firstname']; echo $row['lastname']; $ro ['lastname'] } mysql_free_result($result); ?> IN3501 – TICs para la Gestión – Primavera 2009 6 Como desplegamos los resultados Como desplegamos los resultados Existen varias funciones dentro de PHP para p recuperar los resultados desde la query: mysql_result(), mysql_fetch_array(), mysql_fetch_ro w(), mysql_fetch_assoc(). Veamos una de estas. IN3501 – TICs para la Gestión – Primavera 2009 7 Imprimiendo resultados Imprimiendo resultados mysql y q _fetch_assoc (( $resultado ) $ ) o $resultado: El recurso de donde recuperaremos los datos. Que hace? o Retorna un arreglo asociativo que corresponde a la fila g q p actual y mueve el puntero una fila hacia adelante. • while ($row = mysql_fetch_assoc($resultado)) mysql fetch assoc($resultado)) { echo $row['firstname']; echo $row['lastname'];} IN3501 – TICs para la Gestión – Primavera 2009 8 Liberando recursos Liberando recursos mysql_free_result ( $resultado ) o $ $resultado: Es el recurso que queremos liberar. l d l lb Que hace? Liberara toda la memoria asociada al recurso asociado a $resultado Es importante cunado uno se preocupa de la cantidad $resultado. Es importante cunado uno se preocupa de la cantidad de memoria que se ocupa por consultas demasiado grande. Al finalizar la ejecucion de un script toda memoria se libera. Ejemplo: $query = "SELECT * FROM Usuarios “; $resultado = mysql_query($query); //instrucciones mysql_free_result($result); ?> IN3501 – TICs para la Gestión – Primavera 2009 9 Construyendo una base de datos Construyendo una base de datos Que pasa si no quiero selecciona una base de datos Q p q sino que quiero crearla. En ese caso: o if (mysql_query("CREATE DATABASE hola", $con)) { echo "Database created“; } else { echo "Error echo Error creating database: creating database: " . mysql_error(); mysql error(); } IN3501 – TICs para la Gestión – Primavera 2009 10 Buenas Practicas Buenas Practicas Es común crear un archivo (rutina) con la configuración d l b de la base de datos y la abertura de esta (alguna veces d d l b d ( l también para cerrar la conexión). config.php: En este archivo generalmente se ponen el gp p g p servidor al cual conectarse (‘localhost’), el usuario (‘root’), el password (‘’) y la base de datos con la cual se trabaja. Ejemplo: <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = ''; $dbname = ‘rentavideo'; ?> ?> IN3501 – TICs para la Gestión – Primavera 2009 11 Buenas Practicas (2) Buenas Practicas (2) opendb.php: En este archivo generalmente se pone la conexion i a MySQL M SQL y la base de datos que se utilizara. l b d d t tili Ejemplo: <?php $ $conn = mysql_connect($dbhost, $dbuser, $dbpass) or $ $ $ die ('Error connecting to mysql'); mysql_select_db($dbname); ?> closedb.php: Este archivo es simplemente la linea donde se cierra la conexión. Ejemplo: <?php mysql_close($conn); ?> IN3501 – TICs para la Gestión – Primavera 2009 12 Y como se usan? Y como se usan? <?php p p include 'config.php'; include 'opendb.php'; // lo que se tenga que hacer include 'closedb.php'; ?> IN3501 – TICs para la Gestión – Primavera 2009 13 Tarea 6 Tarea 6 Lo mismo que la tarea 3 pero ahora con MySQL, no consultando a archivos de texto. l d h d Se les entregara un esquema.sql que contiene todas las instrucciones necesarias de SQL para que creen y p q y inicialicen la base de datos, lo deben implementar en PHP (el esquema). La base de datos debe ser creada una única vez. a base de datos debe ser creada una única ve . Ahora las notas se despliegan hacia el lado Se debe incluir el archivo de config.php S d b i l i ( Se debe incluir (como siempre) un archivo que detalle el i ) hi d ll l % de participacion de cada integrante en el desarrollo de la tarea. IN3501 – TICs para la Gestión – Primavera 2009 14