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