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.

[download id=»9″ autop=»false»]

Comentarios Total 70 comentarios

Rafa
Publicado: 02/02/2011 11:01 am

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
Publicado: 19/03/2011 5:25 pm

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

Luner
Publicado: 04/04/2011 5:40 am

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

Enhorabuena.

Bernarda marin
Publicado: 10/06/2011 5:16 pm

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
Publicado: 10/06/2011 11:39 pm

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
Publicado: 30/06/2011 6:41 pm

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
Publicado: 16/08/2011 9:48 am

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
Publicado: 15/09/2011 9:36 am

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
Publicado: 28/09/2011 9:48 am

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
Publicado: 06/10/2011 12:00 pm

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
Publicado: 09/10/2011 11:45 pm

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

Javier Ospina
Publicado: 19/01/2012 12:40 pm

muy buen post, va sin rodeos y muy bien explicado te felicito y te agradezco.

Eduardo
Publicado: 09/05/2012 3:05 pm

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

redman
Publicado: 03/06/2012 10:10 pm

me has salvado el dia muy buen aportee

Elhackandy
Publicado: 09/06/2012 6:02 pm

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
Publicado: 03/11/2012 1:26 am

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
Publicado: 18/11/2012 7:57 pm

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
Publicado: 10/01/2013 9:11 am

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

Gericault Arias
Publicado: 10/04/2013 5:51 pm

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!!

Javier
Publicado: 07/01/2015 11:32 am

Saludos: Hace dias que estoy tratando de insertar un registro en mi MySql y no he podido, hice todo como esta se explica, pero nada, me dice: su registri fue ingresado, pero cuando voy a la base de dato, no hay nada. puse la direccion ip de mi loclhost y nada, ahora tengo duda donde dice clave se pone la clave de mi localhost o se deja la palabra clave, de toda forma probe las dos bariantes, pero sin resultados
Si pudiera ayudarme en esto, se lo agradeserio. Muchas Gracias

 

Comentar

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;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)