En esta ocasión vamos a ver un ejemplo de cómo insertar datos en una base de datos Mysql con PHP, para ellos usaremos la sentencia INSERT y el objeto mysql de PHP.
Suponiendo que tu base de datos se llama "clientes" y que tienes una tabla llamada "datosclientes" con seis campos "id_cliente", "nombre", "apellidos", "direccion", "localidad", "edad".
Bien, pues teniendo la tabla con los campos correctos, vamos a ver un ejemplo práctico en el cual habrá un formulario para agregar nuevos registros a la tabla, todos los pasos a seguir están comentados en el código, también he querido hacer mención al filtrado de datos para dar seguridad a la aplicación, ya que a la hora de trabajar con bases de datos esta es la labor más importante, el formulario será enviado, se capturará el valor de cada uno de los campos y tendrán que pasar un filtro de expresiones regulares a través de la función preg_match, si pasa todos los filtros el registro será guardado en la tabla y mostrado por pantalla, de lo contrario se mostrará un error y el registro no será guardado, ya que el filtro de seguridad no ha sido pasado.
Debajo de las imágenes se encuentra el código de ejemplo.
Imágenes del ejemplo ...
![]() |
Rellenando el formulario |
![]() |
Cliente insertado correctamente |
![]() |
Error al pasar el filtro de Expresiones regulares |
<?php /* By http://php-estudios.blogspot.com */ //En un principio la variable $tabla que muestra el nuevo registro debe declararse y estar en blanco. $tabla = ""; //En un principio la variable $error que muestra el posible error al filtrar los datos debe declararse y estar en blanco. $error = ""; /* Si el formulario es enviado */ if (isset($_POST["insertar"])) { //Almacenar los campos en variables $nombre = $_POST['nombre']; $apellidos = $_POST['apellidos']; $direccion = $_POST['direccion']; $localidad = $_POST['localidad']; $edad = $_POST['edad']; //Filtrar los datos por motivos de seguridad //Este proceso siempre hay que llevarlo a cabo al hacer consultas a la base de datos //Para cada campo aplicaré un filtro de no pasarlo no se realizará la inserción del nuevo registro. if (!preg_match("/^[a-zA-ZñÑáéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòùÀÈÌÒÙ\s]+$/", $nombre)) //letras latinas + espacios { $error = "Ha ocurrido un error, datos no permitidos."; } else if(!preg_match("/^[a-zA-ZñÑáéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòùÀÈÌÒÙ\s]+$/", $apellidos)) //letras latinas + espacios { $error = "Ha ocurrido un error, datos no permitidos."; } else if(!preg_match("/^[a-zA-Z0-9ñÑáéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòùÀÈÌÒÙ\s\_\-\/\º\ª\.\,\:\;]+$/", $direccion)) //letras latinas + números + espacios + algunos caracteres más { $error = "Ha ocurrido un error, datos no permitidos."; } else if(!preg_match("/^[a-zA-ZñÑáéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòùÀÈÌÒÙ\s]+$/", $localidad)) //letras latinas + espacios { $error = "Ha ocurrido un error, datos no permitidos."; } else if(!preg_match("/^[0-9]+$/", $edad)) //Sólo números { $error = "Ha ocurrido un error, datos no permitidos."; } else { //Datos de conexión a la base de datos. $mysql_usuario = "root"; $mysql_password = "password"; $mysql_host = "localhost"; $mysql_database = "clientes"; //Conectar $conexion = mysql_connect($mysql_host, $mysql_usuario, $mysql_password, true); //Seleccionamos la base datos y la conexión, die para mostrar el error si existe algún problema. mysql_select_db($mysql_database, $conexion) || die('No pudo conectarse: '.mysql_error()); //Preparar la consulta para insertar los datos $consulta = "INSERT INTO datosclientes (nombre, apellidos, direccion, localidad, edad)"; $consulta .= "VALUES ('$nombre', '$apellidos', '$direccion', '$localidad', '$edad')"; //Ejecutar la consulta para guardar el registro $resultado = mysql_query($consulta, $conexion) or die(mysql_error()); //Mostrar el registro nuevo en una tabla $tabla = "<table border='1' cellpadding='10'>\n"; $tabla .= "<tr><th>Nombre</th><th>Apellidos</th><th>Dirección</th><th>Localidad</th><th>Edad</th></tr>\n"; $tabla .= "<tr> <td>$nombre</td> <td>$apellidos</td> <td>$direccion</td> <td>$localidad</td> <td>$edad</td> </tr>\n"; $tabla .= "</tabla>\n"; //Cerrar la conexión mysql_close($conexion); } } ?> <!DOCTYPE HTML> <html> <head> <title>Insertar datos en la base de datos MySql con PHP</title> </head> <body> <H3>INSERTAR CLIENTE</H3> <!-- Para mostrar un posible error al filtrar los datos --> <p style="color: red;"><?php echo $error; ?></p> <!-- Para mostrar el nuevo registro --> <p style="color: blue;"><?php echo $tabla; ?></p> <!-- con $_SERVER["PHP_SELF"] estamos diciendo que la consulta será enviada al mismo archivo desde donde se envía el formulario, es decir éste --> <form action="<?php $_SERVER["PHP_SELF"]; ?>" method="post"> <table border="0"> <tr> <td>Nombre:</td> <td><input type="text" name="nombre"></td> </tr> <tr> <td>Apellidos:</td> <td><input type="text" name="apellidos"></td> </tr> <tr> <td>Dirección:</td> <td><input type="text" name="direccion"></td> </tr> <tr> <td>Localidad</td> <td><input type="text" name="localidad"></td> </tr> <tr> <td>Edad</td> <td><input type="text" name="edad" maxlength="3"></td> </tr> <tr> <td> <!-- El envío de este campo 'insertar' será capturado por $_POST para realizar la consulta --> <input type="hidden" name="insertar"> </td> <td><input type="submit" value="Enviar"></td> </tr> </table> </form> </body> </html>
4 comentarios:
La verdad es que tu ejemplo es el más claro, pero sigue sin funcionar algo tan simple como meter un registro en una tabla.
El error permanentemente es:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')VALUES..."
No sé si es la versión de MySql o qué es lo que sucede, pero he probado cuanto código encontré en la web y varios libros pero resulta imposible y siempre me encuentro con el mismo error.
Te agradezco desde ya por cualquier ayuda me puedas ofrecer.
pablook@outlook.com
Puede ser la versión, prueba a instalar la última versión de xampp, el código tal cual debe de funcionar.
La verdad que es excelente el tutorial pase semanas viendo cosas en la web que no servian , PERO ESTO SI FUNCIONA USTED ES GENIAL SEÑOR
Bueno, estos son sólo ejemplos de como realizar consultas a la base de datos, en php un cosa muy importante es la seguridad, para ello existen funciones para validar los datos y evitar la inyección sql y los ataques xss, os aconsejo que veáis los siguientes posts ...
http://php-estudios.blogspot.com.es/2013/02/validacion-de-datos-traves-de-patrones.html
http://php-estudios.blogspot.com.es/2013/02/prevencion-de-ataques-xss-con-php.html
También funciones como htmlspecialchars() | htmlentities() | addslashes() | strip_tags() | str_replace() y algunas más que son muy útiles para crear una aplicación segura.
Publicar un comentario