Almacena los datos en MySQL [Feb. 13, 2012, 10:34 a.m.]
En la primera tarea escribimos un pequeño formulario con dos campos: nombre y mensaje. Lo único que hacía nuestro formulario era validar que no se dejaran campos en blanco, pero en esta tarea vamos a agregar el código necesario para guardar esa información en nuestra base de datos.
SQL
Para interactuar con las bases de datos se utiliza un lenguaje llamado Structured Query Language, ó SQL. En este taller solo veremos dos acciones de SQL:
- INSERT (para insertar datos a una tabla)
- SELECT (para leer datos de una tabla)
Si deseas conocer SQL más a fondo, te recomendamos visitar este link.
La sintaxis para insertar datos a una tabla usando SQL es la siguiente:
INSERT INTO nombreTabla (campo1, campo2, … , campoN) VALUES (valor1, valor2, … , valorN)
Nota: En SQL no hay diferencia entre mayúsculas y minúsculas, pero por convención se escriben las palabras reservadas en mayúscula.
Por ejemplo, si quisiéramos insertar un nuevo mensaje a nuestra tabla guestbook, podríamos usar un comando como este:
INSERT INTO guestbook (nombre, mensaje) VALUES ('Juan Perez', 'Hola a todos')
Sentencias SQL desde PHP
Para ejecutar comandos en MySQL desde PHP se utiliza la función mysql_query().
Por cuestiones de seguridad, se utilizan las funciones sprintf() y mysql_real_escape_string() para “escapar” cualquier caracter especial antes de guardarlo a la base de datos.
Agrega el siguiente código a tu script PHP, después de haber validado que no se hayan mandado mensajes en blanco:
<?php // Datos para la conexion $host = 'mysql_host'; $database = 'mysql_database'; $username = 'mysql_user'; $password = 'mysql_pd'; // Conectarse a MySQL $link = mysql_connect($host, $username, $password); if (!$link) { die('Error al conectarse a mysql: ' . mysql_error()); } // Seleccionar nuestra base de datos $db_selected = mysql_select_db($database, $link); if (!$db_selected) { die ('Error al abrir la base de datos: ' . mysql_error()); } // Construir el query $query = sprintf("INSERT INTO guestbook (nombre, mensaje) VALUES ('%s', '%s')", mysql_real_escape_string($_POST['nombre']), mysql_real_escape_string($_POST['mensaje'])); // Ejecutar el query $result = mysql_query($query); if (!$result) { die('Query invalido: ' . mysql_error()); } else { echo 'Gracias por su mensaje'; } ?>
(Recuerda que debes cambiar los datos de conexión para usar los valores de tu hosting.)
Ahora puedes probar creando mensajes nuevos y luego revisando a través de phpMyAdmin si se están guardando correctamente en tu base de datos.