:::: MENU ::::

Insertar registros en MySQL

En un articulo anterior Conectar PHP con MySQL explicamos como realizar una conexión a MySQL y obtener datos con PHP, en esta ocasión veremos como insertar registros en nuestra base de datos.

insert-mysql

Creando la Base de datos
Para este ejemplo necesitamos una base de datos que la llamaremos demo, en la cual crearemos un tabla llamada empresa la cual tendrá los siguientes campos: idemp, nombre, direccion, telefono. Para los menos experimentados les dejo el script SQL para crear esta tabla.

Sintaxis SQL para insertar registros
Lo primero que necesitamos conocer el la sintaxis SQL para insertar registros la cual mostramos a continuación en donde table es la tabla donde deseamos insertar los datos, field1 y field2 son los nombres de los campos y value1 y value2 los valores:

[SQL]
INSERT INTO table (field1, field2) VALUES (value1, value2)
[/SQL]

Luego, para hacer la inserción utilizando PHP, lo primero es crear una conexión y luego enviar la consulta utilizando el método mysql_query de la siguiente forma:

$conexion = mysql_connect("localhost", "usuario", "clave");
mysql_select_db("demo", $conexion);

$que = "INSERT INTO empresa (nombre, direccion, telefono) ";
$que.= "VALUES ('Inka Tours', 'Av Pardo 728', '511 4845858') ";
$res = mysql_query($que, $conexion) or die(mysql_error());

Creando el Formulario
Para que el usuario puede ingresar los datos de manera sencilla crearemos un formulario en cual cual se ingresarán los datos de la empresa, para ello creamos el formulario en html.

<form id="insertar" name="insertar" method="post" action="">
Nombre:
<input name="nombre" type="text" id="nombre" size="50" />
Direccion:
<input name="dir" type="text" id="dir" size="50" />
Telefono:
<input name="fono" type="text" id="fono" size="50" />
<input type="submit" name="Submit" value="Insertar Registro" />
<input type="hidden" name="action" value="add" />
</form>

Notese que hemos agregado un campo oculto llamado action el cual lo utilizaremos para verificar si se ha enviado el formulario y procesar los datos. Entonces verificamos que se enviado el formulario en cuyo caso realizamos la conexión a MySQL y enviamos la consulta para insertar los datos.

$state = false;
if ($_POST['action'] == "add") { 
	$conexion = mysql_connect("localhost", "usuario", "clave");
	mysql_select_db("demo", $conexion);
	
	$que = "INSERT INTO empresa (nombre, direccion, telefono) ";
	$que.= "VALUES ('".$_POST['nombre']."', '".$_POST['dir']."', '".$_POST['fono']."') ";
	$res = mysql_query($que, $conexion) or die(mysql_error());
	$state = true;
}

Finalmente mostramos un mensaje cuando se ha insertado correctamente el registro en la base de datos.

<?php if ($state) { ?>
<p><em>Registro insertado correctamente</em></p>
<?php } ?> 

Observaciones
Por motivos de facilitar el entendimiento del funcionamiento de la inserción de datos hemos obviado algunos puntos. Pero es necesario advertir que para insertar registros los datos que vienen desde formularios nunca deben ir directamente a la consulta pues pueden contener sentencias SQL (Esto es llamado Inyección SQL) proceso mediante el cual pueden ingresar a nuestros sistemas y manipular datos sin consentimiento nuestro.

Otro punto que hay que tener en cuenta es validar los datos, esto para prevenir que se ingrese texto donde debería haber números por ejemplo, lo cual generaría errores de SQL.

Finalmente les dejo los archivos fuente para que lo descarguen y hagan sus propias pruebas para comprender el funcionamiento de este script.


69 Comentarios

  • Rafa |

    gracias por tomarte la molestia de tu post, la verdad es que no daba pie con bola, solo que ahora te agradeceria, al igual que algunos amigos que te han escrito, que nos hicieras el favor de ponernos un ejemplo de como darle mantenimiento a la base; esto es modificar, borrar y actualizar.

    de antemano muchas gracias

  • Jemys |

    Muy buen aporte, me sirvió, pues estaba a punto de volverme loca, gracias

  • Luner |

    Gracias.Pese al comentario #1, este post te sigue dando trabajo…trás más de 2 años!

    Enhorabuena.

  • Bernarda marin |

    estimado realice todo lo que indica pero me sale un error “No database selected” cual seria el problema ya que según se , es que habría un error en mi datos de coneccion , y los he corroborado todo.

  • unijimpe |

    Bernarda, verifica que los datos de tu conexión sea la correcta. Es probable que la ruta de tu servidor MySQL no sea localhost entonces prueba colocando el IP del servidor donde se encuentra el servidor MySQL

    $conexion = mysql_connect("localhost", "usuario", "clave");

    Luego verifica que el nombre de la base de datos que estas utilizando sea la correcta:

    mysql_select_db("demo", $conexion);

  • JuanDavid |

    unijimpe Porfavor Quiero Pedirte Tu Ayuda HIze Todo Lo Que Estaba En la GUia Y pUes cuando lleno los datos y le doy ingresar datos se queda un rato cargando y me sale este error

    Fatal error: Maximum execution time of 60 seconds exceeded in C:\AppServ\www\insert-mysql.php on line 5

    Puse la etiqueta o como se llame error_reporting(E_ERROR) pero no encuentro el error todo corresponde con la base de datos y el localhost tambien ayudeme porfa

  • David |

    Impecable el ejemplo, soy usuario de asp, y estaba interesado en aprender lo mas basico que es un abm, y la verdad que esta muy bueno el contenido del blog y no parece que sea de relleno como dijeron por ahi.
    Muchas gracias de verdad.

  • Roberto |

    Hola que tal unijimpe exelente blog, tengo un problemita a la hora de enviar el registro a la bd me sale este error:
    php_network_getaddresses: getaddrinfo failed: No such host is known.

    quisiera que me dijeras que fue lo que hice mal

  • alexeins_21 |

    Magistral realmente muy pero muy bueno…. he leido tanto sobre PHP que hasta un libro me compre.. pero no se compara como lo tu BLOG… fue de gran ayuda… buena pana….. felicitaciones por tu BLOG muy preciso…

  • alexeins_21 |

    Me puedes ayudar estoy tratando de implementar el eliminar pero me salen full errores…. tienes el scrip de esta consulta…?????????? seria de gran ayuda gracias…………

  • titicon |

    hola gracias por tus aportes son de gran ayuda
    porfa puedes publicar uno con actualizar eliminar y pues tamen si tienes con ajax gracias

  • Eduardo |

    hola, estoy haciendo un proyecto en php y me salta la duda, ya ingreso borro modifico datos pero consulta por consulta o linea por linea, lo que me causa un poco de duda es lo siguiente. ¿de que manera puedo ir y buscar a la base de datos traer un registro, luego este registro agregarlo a una especie de tabla temporal o algo asi del lado del cliente, y una vez seleccionados “n” numero de registros guardarlos todos los seleccionados en otra tabla? saludos a toda la comunidad espero se entienda lo que intente preguntar bye

  • Elhackandy |

    Holaaa mil gracias Me re sirvio para mi script de videos que estoy haciendo mil gracias y muy buena la web sigan asi :D

  • josue cadena suarez |

    hola amigo que tal muy buen aporte.. pero tengo una preguntita.. como hago para que no se me repitan mucho las filas insertadas.. osea inserto 3 vuelvo actualizar la pagina se me ingresan 3 mas de la misma y sigo actualizando y me sigue insertando la misma… podrias ayudarme con eso porfa muchas gracias de antemano

  • Raul |

    mysql_query(“INSERT INTO SistemaDeComentarios (TotalComentarios, Nombre , Apodo , Email , Pagweb, Facebook, Twitter, Edad, Sexo, Comentario, IndicadorCoR, Fecha, Hora, FotoRuta, DirCarpetaFotos)
    VALUES (NULL, ‘$nombre’, ‘$apodo’ , ‘$email’ , ‘$pagweb’, ‘$facebook’, ‘$twitter’, ‘$edad’, ‘$sexo’, ‘$mensaje’, ‘$indicadorCoR’, ‘$fecha’, ‘$hora’, ‘$fotoruta’, ‘$dircarpetafotos’)”);

    puede alguien decirme cual es mi error, por que php no me marca ningun error pero de tantos intentos fallido y reduciendo el margen llegue a la conclusion de que esto es lo que falla pues no inserta datos en mi base de datos y todo aparenta estar bien, ya me desespere porque no inserta los datos :/

    es para una tarea que tengo que hacer para la escuela donde estudio.
    mi codigo es enorme pero el error esta ahi en ese pequeño fragmento :/

  • jose |

    Akgo asi estaba buscando exelente, muy practico.. lo probare y te cuento como me va

  • Gericault Arias |

    Buenas Tardes,

    Mira yo hice todos los pasos y me resulta bien, el problema es que al ingresar los datos en el formulario y darle enviar me muestra datos insertados correctamente pero en la base de datos no los inserta todos..Me deja algunos espacios en blanco.

    Gracias es urgente!!

Publica tu comentario

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.