This course will become read-only in the near future. Tell us at community.p2pu.org if that is a problem.

Almacena los datos en MySQL



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 la data 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 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.

Discusión de la Tarea