Programacion PHP & MySql - Paso a Paso
Conectar PHP con MySQL
Obtener registros de una base de datos MySQL utilizando PHP es una de las tareas mas comunes que se le presenta a todo desarrollador web, por ello les presentamos un pequeña guía para consultar registros utilizando PHP.
Creando la Base de datos
Obviamente para este ejemplo necesitamos una base de datos que la llamaremos demo, dentro crearemos un tabla llamada empresa la cual tendrá los siguientes campos: idemp, nombre, direccion, telefono, imagen. Para los menos experimentados les dejo el script SQL para crear esta tabla.
Código Web
Conectando PHP y MySQL
Para obtener los datos desde MySQL necesitamos una conexión (una forma de enlazar o comunicarse), la cual nos permitirá extraer datos de la misma. Para ello PHP tiene una serie de funciones exclusivamente para interactuar con mysql. Entonces para la conexión utilizaremos la función mysql_connect y luego mysql_select_db el cual nos permite definir a que base de datos del servidor deseamos conectarnos.
Código Web
Obteniendo registros de la Base de Datos
Una vez que tenemos una conexión lo siguiente es extraer los datos, esto lo hacemos enviando consultas SQL mediante la función mysql_query. También obtenemos el numero total de registros devueltos por nuestra consulta.
Código Web
Mostrando los resultados.
Finalmente mostramos los resultados obtenidos de nuestra consulta, para ello extraemos cada resultado utilizando la función mysql_fetch_assoc la cual devuelve una matriz asociativa utilizando los nombres de los campos de la tabla.
Código Web
Notese que primero hemos verificado si existen resultados y luego verificamos en cada pasada de la sentencia While si existe el siguiente resultado para luego mostrarlo. Asi como hemos consultado registros, podemos insertar, editar y eliminar registros enviando sentencias SQL a la base de datos.
Insertar datos en MySQL
Requerimientos
Para guardar datos en MySQL es necesario primero crear una conexión con MySQL, también necesitamos una base de datos de ejemplo el cual pueden crear con el siguiente script SQL y finalmente conocimientos Tutorial sobre la Introducción a SQL.
Conceptos Básicos
PHP provee funciones nativas que permiten interactuar con MySQL, para el proceso de insertar registros utilizaremos las siguientes funciones.
Entonces si deseamos insertar una nueva empresa en nuestra tabla de ejemplo tendríamos:
Código Web
Como pueden ver la creación de datos es sencilla, solo necesitamos crear la consulta adecuada y la enviamos mediante mysql_query.
Ejemplo Práctico
Veamos un ejemplo práctico, donde mediante un formulario en HTML registraremos los datos de las empresas.
Creando el Formulario
Para nuestro ejemplo creamos un formulario con tres campos (nombre, dirección y teléfono) con dos botones uno para enviar los datos y otro para limpiar el formulario.
Código Web
Procesando los Datos
El siguiente paso, es verificar si se están enviando datos desde un formulario para luego crear la consulta concatenando los datos enviados para finalmente guardar los datos con la función mysql_query.
Código Web
Uniendo el código obtenemos nuestro primer ejemplo funcionando para agregar registros desde un formulario.
Filtrando los Datos
El ejemplo anterior, funciona pero tiene un problema y es que el usuario podría haber ingresado datos inválidos (Por ejemplo texto donde solo se aceptan números) o también enviar código SQL para atacar a nuestra base de datos. Por ello antes de utilizar los datos enviados por el usuario es necesario antes normalizar estos datos.
Creamos una función llamada sqlValue, esta se encarga de convertir al tipo de dato correcto y agregarle los apostrofes necesarios para los textos y fechas.
Código Web
Esta función recibe dos parámetros, el primero el dato que deseamos normalizar y el segundo el tipo de dato (text, int, double, date). Luego vamos a modificar nuestro primer script para verificar los datos antes de guardarlos.
Código Web
Unimos nuevamente el código y obtenemos una nueva forma de guardar datos en MySQL esta vez verificando los tipos de datos antes de guardarlos.
Haciendo pequeñas modificaciones podríamos guardar los datos de cualquier formulario, no importa la cantidad de datos o la complejidad de los mismos, todo este proceso se puede resumir en armar correctamente la consulta SQL para insertar los datos.
Depurar los INSERTS
Si tienen problemas en la creación de sus consultas por que no insertan o generan un error, lo mas sencillo es imprimir la consulta antes de enviarla a MySQL y detener la ejecución del script PHP.
Código Web
La consulta devuelta podemos revisarla y detectar algún error de sintaxis, también podríamos ejecutarla directamente en algún cliente de MySQL que tengamos para verificar si hace la inserción correctamente.
Consultar datos en MySQL
Consultar o extraer datos es una de las tareas mas comunes al interactuar con bases de datos, de esta forma podemos extraer los datos previamente almacenados, por ejemplo para mostrar la lista de productos de una tienda online o también para un buscador de documentos o el login de usuarios.
Extrayendo datos de MySQL
Para extraer datos utilizaremos la función mysql_query mediante la cual enviamos un consulta SQL. Entonce primero incluimos el archivo para crear la conexión e inmediatamente creamos la consulta para extraer todos los datos de las empresas en nuestra base de datos.
Código Web
También se puede agregar una sentencia para mostrar si hay algún error en la conexión o consulta.
Código Web
Mostrando los Datos
El siguiente paso es mostrar los datos extraídos en la consulta, para ello podemos utilizar mysql_fetch_assoc el cual devolverá un array asociativo con el siguiente registro devuelto por la consulta. Entonces para mostrar todos los registros devueltos por la consulta se tendría:
Código Web
Donde se puede ver que para acceder a cada campo del registro lo hacemos como un array donde le pasamos el nombre del campo que deseamos acceder (En el ejemplo estamos mostrando todos los nombres de las empresas consultadas).
Ahora, solo depende como deseamos mostrar los datos para modificar nuestro script. Por ejemplo si deseamos mostrar los datos como una lista tendríamos
Código Web
Ahora también podríamos mostrar los resultados en una tabla o datagrid, para ello modificamos nuestro código donde utilizaremos una tabla para mostrar en varias columnas los datos consultados.
Código Web
Crear un Buscador
Ahora, podríamos crear un buscador básico de empresas, para ello creamos un formulario para ingresar el criterio de búsqueda.
Antes de continuar decidimos el tipo de consulta SQL que vamos a utilizar, en nuestro caso la búsqueda será por las primeras letras del nombre, para ello utilizaremos la sentencia LIKE explicada en el artículo Tutorial sobre la Introducción a SQL
Código Web
Luego, una vez enviado el formulario procedemos a recuperar los datos para proceder a crear la consulta y enviarla a MySQL. Primero verificamos que se ha enviado un criterio de búsqueda luego creamos la consulta no sin antes normalizar los datos (para prevenir ataques de inyección SQL).
Código Web
Nótese que estamos utilizando una variable $total donde se almacena el total de resultados devueltos por la consulta. El total de resultados se obtiene con la función mysql_num_rows.
Finalmente mostramos los resultados al cliente, para ello verificamos que existan resultados en la consulta. Uniendo todos los elementos tendríamos:
Código Web
Como pueden ver no es complicado hacer consultas a MySQL, solo debemos crear la cadena con la consulta SQL y luego enviarla utilizando la función mysql_query. Lo siguiente solo depende de como deseamos mostrar la información resultante de nuestra consulta.
Obtener registros de una base de datos MySQL utilizando PHP es una de las tareas mas comunes que se le presenta a todo desarrollador web, por ello les presentamos un pequeña guía para consultar registros utilizando PHP.
Creando la Base de datos
Obviamente para este ejemplo necesitamos una base de datos que la llamaremos demo, dentro crearemos un tabla llamada empresa la cual tendrá los siguientes campos: idemp, nombre, direccion, telefono, imagen. Para los menos experimentados les dejo el script SQL para crear esta tabla.
Código Web
#---------------------------- # Table structure for empresa #---------------------------- CREATE TABLE `empresa` ( `idemp` int(11) NOT NULL AUTO_INCREMENT, `nombre` varchar(180) NOT NULL DEFAULT '', `direccion` varchar(180) NOT NULL DEFAULT '', `telefono` int(8) NOT NULL DEFAULT '0', `imagen` varchar(50) NOT NULL DEFAULT '', PRIMARY KEY (`idemp`) ); #---------------------------- # Records for table empresa #---------------------------- INSERT INTO empresa VALUES (4, 'Pesacon', 'Jr. Los Astrónomos Mz. C 11 Lt. 13', 3872056, 'b55dd5_001048 balanzas pesacon.jpg'), (46, 'Quipu Digital', 'Carret. Central Km. 21, 730', 3584531, '424cce_001040 internet quipu digital.jpg'), (13, 'Courier Cristiano Jeshua', 'Jr. Risso 538', 96464860, 'd621a7_001103 courier jeshua.jpg'), (17, 'Serv. Ledesma SAC', 'Prolg. Iquitos 2200', 2659006, 'ledesma.jpg'), (18, 'Sonido Profesional Arriola', 'Alicia Alarcón 400', 4820496, '7a88d4_001416 equipos de sonido arriola.jpg'), (25, 'Juegos Emperatriz', 'Teodoro Cárdenas 790, Sta. Beatriz', 4714603, 'fc0c9b_002216 juego recreativos.jpg'), (27, 'Stockholm Hipermedia S.A.', 'Los Calderos 140, Urb. Vulcano', 3494222, '898810_001044 muebles stockhom.jpg'), (28, 'Notaria Beatriz Zevallos G.', 'Av. Túpac Amaru 782, 2º Piso', 4852526, 'd02fcf_001025 notaria giampietri.jpg'), (30, 'A & B Hidrosistemas SAC', 'Av. Tomás Marsano 1265', 2710263, 'cb2dc7_002207 Hidrosistemas.jpg'), (33, 'Macro Work SAC', 'Calle La Habana 280', 4222122, 'a92b21_002003 macro word.jpg'), (36, 'Per Systems SA', 'Av. Arenales 2523', 4226322, '32f133_002086-per-antivirus.jpg'), (37, 'Transporte Torre Fuerte', 'Calle Costa Azul Mz. B Lt. 16', 2511749, 'cdcd2d_002113 transporte torre fuerte 1.jpg'), (51, 'Global Medica', 'Jr. Pablo Bermudez 192', 4336470, '556cd1_001375 clinica global medica.jpg'), (39, 'Distribuidora Mesajil Hnos.', 'Jr. Camaná 1163', 4239453, '9be658_002002 mesajil hnos s.a.c.jpg'), (55, 'Lima International School', 'Av. La Molina 1255, Sol de La Molina', 4790846, '2a5958_002213school tomorrow 3.jpg'), (59, 'Sandwiches Passatore', 'Jr. Toribio Seminario 696', 4508684, '46d48f_002208 sandwiches passatore.jpg'), (61, 'Publimedios', 'Av. Independencia 879, Huamanga', 312436, '9c6a82_002226 publicistas publimedios.jpg'), (63, 'AJEPER', 'Av. La Paz Lt.30, Sta. María de Huachipa', 3711812, 'a31ad0_gaseosas ajeper 001404.jpg');
Conectando PHP y MySQL
Para obtener los datos desde MySQL necesitamos una conexión (una forma de enlazar o comunicarse), la cual nos permitirá extraer datos de la misma. Para ello PHP tiene una serie de funciones exclusivamente para interactuar con mysql. Entonces para la conexión utilizaremos la función mysql_connect y luego mysql_select_db el cual nos permite definir a que base de datos del servidor deseamos conectarnos.
Código Web
$conexion = mysql_connect("localhost", "usuario", "clave"); mysql_select_db("demo", $conexion);
Obteniendo registros de la Base de Datos
Una vez que tenemos una conexión lo siguiente es extraer los datos, esto lo hacemos enviando consultas SQL mediante la función mysql_query. También obtenemos el numero total de registros devueltos por nuestra consulta.
Código Web
$queEmp = "SELECT * FROM empresa ORDER BY nombre ASC"; $resEmp = mysql_query($queEmp, $conexion) or die(mysql_error()); $totEmp = mysql_num_rows($resEmp);
Mostrando los resultados.
Finalmente mostramos los resultados obtenidos de nuestra consulta, para ello extraemos cada resultado utilizando la función mysql_fetch_assoc la cual devuelve una matriz asociativa utilizando los nombres de los campos de la tabla.
Código Web
if ($totEmp> 0) { while ($rowEmp = mysql_fetch_assoc($resEmp)) { echo "<strong>".$rowEmp['nombre']."</strong><br>"; echo "Direccion: ".$rowEmp['direccion']."<br>"; echo "Telefono: ".$rowEmp['telefono']."<br><br>"; } }
Notese que primero hemos verificado si existen resultados y luego verificamos en cada pasada de la sentencia While si existe el siguiente resultado para luego mostrarlo. Asi como hemos consultado registros, podemos insertar, editar y eliminar registros enviando sentencias SQL a la base de datos.
Insertar datos en MySQL
Requerimientos
Para guardar datos en MySQL es necesario primero crear una conexión con MySQL, también necesitamos una base de datos de ejemplo el cual pueden crear con el siguiente script SQL y finalmente conocimientos Tutorial sobre la Introducción a SQL.
Conceptos Básicos
PHP provee funciones nativas que permiten interactuar con MySQL, para el proceso de insertar registros utilizaremos las siguientes funciones.
- mysql_query permite enviar cualquier consulta SQL (SELECT, INSERT, UPDATE, etc.) desde PHP.
- mysql_insert_id devuelve el identificador del último registro ingresado.
Entonces si deseamos insertar una nueva empresa en nuestra tabla de ejemplo tendríamos:
Código Web
// abrimos la conexión require("conexion.php"); // insertarmos el registro mysql_query("INSERT INTO empresa (nombre, direccion) VALUES ('Apple', '1 Infinite Loop')"); // mostramos el ID del registro echo mysql_insert_id();
Como pueden ver la creación de datos es sencilla, solo necesitamos crear la consulta adecuada y la enviamos mediante mysql_query.
Ejemplo Práctico
Veamos un ejemplo práctico, donde mediante un formulario en HTML registraremos los datos de las empresas.
Creando el Formulario
Para nuestro ejemplo creamos un formulario con tres campos (nombre, dirección y teléfono) con dos botones uno para enviar los datos y otro para limpiar el formulario.
Código Web
<form method="post" action="agregar-empresa.php"> Nombre <input type="text" id="nombre" name="nombre" /><br /> Dirección <input type="text" id="direccion" name="direccion" /><br /> Teléfono <input type="text" id="telefono" name="telefono" /><br /> <button type="submit">Guardar</button> <button type="reset">Limpiar</button> </form>
Procesando los Datos
El siguiente paso, es verificar si se están enviando datos desde un formulario para luego crear la consulta concatenando los datos enviados para finalmente guardar los datos con la función mysql_query.
Código Web
// file: insert-demo2.php require("conexion.php"); $status = ""; if (isset($_POST["nombre"])) { $nombre = $_POST["nombre"]; $direccion = $_POST["direccion"]; $telefono = $_POST["telefono"]; // Creamos la consulta $sql = "INSERT INTO empresa (nombre, direccion, telefono) "; $sql.= "VALUES ('".$nombre."', '".$direccion."', '".$telefono."')"; // enviamos la consulta mysql_query($sql, $conexion); $status = "ok"; }
Uniendo el código obtenemos nuestro primer ejemplo funcionando para agregar registros desde un formulario.
Filtrando los Datos
El ejemplo anterior, funciona pero tiene un problema y es que el usuario podría haber ingresado datos inválidos (Por ejemplo texto donde solo se aceptan números) o también enviar código SQL para atacar a nuestra base de datos. Por ello antes de utilizar los datos enviados por el usuario es necesario antes normalizar estos datos.
Creamos una función llamada sqlValue, esta se encarga de convertir al tipo de dato correcto y agregarle los apostrofes necesarios para los textos y fechas.
Código Web
// file: funciones.php function sqlValue($value, $type) { $value = get_magic_quotes_gpc() ? stripslashes($value) : $value; $value = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($value) : mysql_escape_string($value); switch ($type) { case "text": $value = ($value != "") ? "'" . $value . "'" : "NULL"; break; case "int": $value = ($value != "") ? intval($value) : "NULL"; break; case "double": $value = ($value != "") ? "'" . doubleval($value) . "'" : "NULL"; break; case "date": $value = ($value != "") ? "'" . $value . "'" : "NULL"; break; } return $value; }
Esta función recibe dos parámetros, el primero el dato que deseamos normalizar y el segundo el tipo de dato (text, int, double, date). Luego vamos a modificar nuestro primer script para verificar los datos antes de guardarlos.
Código Web
// file: insert-demo3.php require("conexion.php"); require("funciones.php"); $status = ""; if (isset($_POST["nombre"])) { $nombre = sqlValue($_POST["nombre"], "text"); $direccion = sqlValue($_POST["direccion"], "text"); $telefono = sqlValue($_POST["telefono"], "int"); $sql = "INSERT INTO empresa (nombre, direccion, telefono) "; $sql.= "VALUES (".$nombre.", ".$direccion.", ".$telefono.")"; mysql_query($sql, $conexion); $status = "ok"; }
Unimos nuevamente el código y obtenemos una nueva forma de guardar datos en MySQL esta vez verificando los tipos de datos antes de guardarlos.
Haciendo pequeñas modificaciones podríamos guardar los datos de cualquier formulario, no importa la cantidad de datos o la complejidad de los mismos, todo este proceso se puede resumir en armar correctamente la consulta SQL para insertar los datos.
Depurar los INSERTS
Si tienen problemas en la creación de sus consultas por que no insertan o generan un error, lo mas sencillo es imprimir la consulta antes de enviarla a MySQL y detener la ejecución del script PHP.
Código Web
$sql = "INSERT INTO empresa (nombre, direccion, telefono) "; $sql.= "VALUES (".$nombre.", ".$direccion.", ".$telefono.")"; echo $sql; exit; mysql_query($sql, $conexion);
La consulta devuelta podemos revisarla y detectar algún error de sintaxis, también podríamos ejecutarla directamente en algún cliente de MySQL que tengamos para verificar si hace la inserción correctamente.
Consultar datos en MySQL
Consultar o extraer datos es una de las tareas mas comunes al interactuar con bases de datos, de esta forma podemos extraer los datos previamente almacenados, por ejemplo para mostrar la lista de productos de una tienda online o también para un buscador de documentos o el login de usuarios.
Extrayendo datos de MySQL
Para extraer datos utilizaremos la función mysql_query mediante la cual enviamos un consulta SQL. Entonce primero incluimos el archivo para crear la conexión e inmediatamente creamos la consulta para extraer todos los datos de las empresas en nuestra base de datos.
Código Web
// incluimos la conexión require("conexion.php"); // creamos la consulta $query = "SELECT * FROM empresa ORDER BY nombre ASC"; // enviamos la consulta a MySQL $queEmp = mysql_query($query, $conexion);
También se puede agregar una sentencia para mostrar si hay algún error en la conexión o consulta.
Código Web
require("conexion.php"); $query = "SELECT * FROM empresa ORDER BY nombre ASC"; $queEmp = mysql_query($query, $conexion) or die(mysql_error());
Mostrando los Datos
El siguiente paso es mostrar los datos extraídos en la consulta, para ello podemos utilizar mysql_fetch_assoc el cual devolverá un array asociativo con el siguiente registro devuelto por la consulta. Entonces para mostrar todos los registros devueltos por la consulta se tendría:
Código Web
while ($resEmp = mysql_fetch_assoc($queEmp)) { echo $resEmp['nombre']."<br>"; }
Donde se puede ver que para acceder a cada campo del registro lo hacemos como un array donde le pasamos el nombre del campo que deseamos acceder (En el ejemplo estamos mostrando todos los nombres de las empresas consultadas).
Ahora, solo depende como deseamos mostrar los datos para modificar nuestro script. Por ejemplo si deseamos mostrar los datos como una lista tendríamos
Código Web
<ul> <?php while ($rsEmp = mysql_fetch_assoc($quEmp)) { ?> <li><?php echo $rsEmp['nombre']; ?></li> <?php } ?> </ul>
Ahora también podríamos mostrar los resultados en una tabla o datagrid, para ello modificamos nuestro código donde utilizaremos una tabla para mostrar en varias columnas los datos consultados.
Código Web
<table> <tr> <th>Nombre</th> <th>Dirección</th> <th>Teléfono</th> </tr> <?php while ($rsEmp = mysql_fetch_assoc($quEmp)) { ?> <tr> <td><?php echo $rsEmp['nombre']; ?></td> <td><?php echo $rsEmp['direccion']; ?></td> <td><?php echo $rsEmp['telefono']; ?></td> </tr> <?php } ?> </table>
Crear un Buscador
Ahora, podríamos crear un buscador básico de empresas, para ello creamos un formulario para ingresar el criterio de búsqueda.
Antes de continuar decidimos el tipo de consulta SQL que vamos a utilizar, en nuestro caso la búsqueda será por las primeras letras del nombre, para ello utilizaremos la sentencia LIKE explicada en el artículo Tutorial sobre la Introducción a SQL
Código Web
SELECT * FROM empresa WHERE nombre LIKE 'A%'
Luego, una vez enviado el formulario procedemos a recuperar los datos para proceder a crear la consulta y enviarla a MySQL. Primero verificamos que se ha enviado un criterio de búsqueda luego creamos la consulta no sin antes normalizar los datos (para prevenir ataques de inyección SQL).
Código Web
require("conexion.php"); require("funciones.php"); $criterio = getParam($_GET["criterio"], ""); $total = 0; if ($criterio != "") { $slike = sqlValue($criterio."%", "text"); $query = "SELECT * FROM empresa WHERE nombre like ".$slike." ORDER BY nombre ASC"; $queEmp = mysql_query($query, $conexion); $total = mysql_num_rows($queEmp); }
Nótese que estamos utilizando una variable $total donde se almacena el total de resultados devueltos por la consulta. El total de resultados se obtiene con la función mysql_num_rows.
Finalmente mostramos los resultados al cliente, para ello verificamos que existan resultados en la consulta. Uniendo todos los elementos tendríamos:
Código Web
<?php require("conexion.php"); require("funciones.php"); $criterio = getParam($_GET["criterio"], ""); $total = 0; if ($criterio != "") { $slike = sqlValue($criterio."%", "text"); $query = "SELECT * FROM empresa WHERE nombre like ".$slike." ORDER BY nombre ASC"; $queEmp = mysql_query($query, $conexion); $total = mysql_num_rows($queEmp); } ?> <html> <head> <title>Consultar datos en MySQL</title> </head> <body> <h3>Buscador de Empresas</h3> <form id="frbuscar" method="get" action=""> <input name="criterio" id="criterio" type="text" /> <input type="submit" id="btbuscar" value="Buscar" /> </form> <?php if ($total> 0) { ?> <em>Total de Resultados: <?php echo $total; ?></em> <table> <tr> <th>Nombre</th> <th>Dirección</th> <th>Teléfono</th> </tr> <?php while ($rsEmp = mysql_fetch_assoc($quEmp)) { ?> <tr> <td><?php echo $rsEmp['nombre']; ?></td> <td><?php echo $rsEmp['direccion']; ?></td> <td><?php echo $rsEmp['telefono']; ?></td> </tr> <?php } ?> </table> <?php } ?> <p> </p> </body> </html>
Como pueden ver no es complicado hacer consultas a MySQL, solo debemos crear la cadena con la consulta SQL y luego enviarla utilizando la función mysql_query. Lo siguiente solo depende de como deseamos mostrar la información resultante de nuestra consulta.
No hay comentarios.