Insertar multiples registros en una sola consulta con MYSQL y PHP
Insertar multiples registros a una tabla Mysql desde PHP siempre ha sido un problema, en el presente post, les diré como lo pueden hacer de una manera eficiente y desde una sola consulta.
Se que este Post será ayuda, asi que una forma de retribuir esa ayuda, es visitando los Sitios Recomendados que aparecen a la izquierda del post o la publicidad ya que ellos proveen información relacionada al post presente y darán mayor presencia al Blog de su servidor…
Además pueden recomendar este Blog en delicius o cualquier otra red social que encuentre, tambien seria bueno que compartan sus experiencias a través de sus comentarios.
Seguimos:
Suponiendo que tenemos la tabla persona:
tabla : persona
campo 1 : id
campo 2 : nombre
campo 3: edad
Y deseamos insertar los siguientes datos:
persona 1 = (1, ‘gabriel’, 14)
persona 2 = (2, ‘jorge’, 21)
persona 3 = (3, ‘carmen’, 21)
1.- Podemos insertarlo de la manera comun desde MYSQL (1 por uno :P)
insert into persona (1, ‘gabriel’, 14);
insert into persona (2, ‘jorge’, 21) ;
insert into persona (3, ‘carmen’, 21) ;
2.- Ahora podemos insertarlo desde una sola consulta así :
insert into persona (id, nombre, edad) values (1, ‘gabriel’, 14) , (2, ‘jorge’, 21), (3, ‘carmen’, 21) ;
Se dan cuenta lo fácil que es?
Ahora solo hay que mudar el código en PHP, pero como hemos insertado solo 3 registros, no vamos a suponer que siempre van a insertar 3, ustedes pueden insertar muchos más!
Código en PHP
<?php
$link = mysql_connect('host', 'usuario', 'contrasena');
mysql_select_db('base_de_datos',$link);
// Array de registros , se supone que pueden ser muchos más, y cargado de diferentes formas
$array_persona = ( array(1, 'gabriel', 14) , array (2, 'jorge', 21), array (3, 'carmen', 21) ) ;
//Ahora preparamos el insert
$sql = " insert into persona (id, nombre, edad) values ";
//Contamos el numero de registros
$n_registros = count($array_persona);
$indice = 1;
//Recorremos el array
foreach($array_persona as $persona){
$id = $persona[0];
$nombre = $persona[1];
$edad = $persona[2];
//Creamos el cuerpo de los valores
$sql .= " ( $id , '$nombre', $edad) ";
//Y ubicamos la coma ya que el registro final no lleva coma
if($indice > $n_registros){ $sql .=" , "; }
$indice ++;
}//foreach
//Una vez formada la sentencia SQL, la ejecutamos
mysql_query($sql, $link);
?>
Y eso es todo, de esa forma podemos insertar multiples registros construyendo la consulta de manera dinámica.
Muchas Gracias
Atte
Rubén Bocanegra
dinámica
hola
gracias esta buenisima tu explicaion lo es lo que quiero hacer al insertar muchas calificaciones de alumnos en solo una vesz en php
gracias espero me des un ejemplo de eso
cholo revisa tu codigo me he psado 3 horas leyendo tu codigo y no funcaba
buena explicacion.
Mira esta muy interesante el tuto pero habria una forma de ingresar varios registros si tener que crear uno por uno en los formulario, ademas manejando los $_POST de los camos de texto.
Gracias necesito una ayuda XD…..
Hola Rubén,
Gracias por el aporte, como podria hacer esto si los datos los tengo en un archivo txt o xls y son mas de 2000 y evitarme tener que escribir
$array_persona = ( array(1, ‘gabriel’, 14) , array (2, ‘jorge’, 21), array (3, ‘carmen’, 21), …2000 veces ) ;
Gracias…
Hola Rubén,
Consegui este otro script php, con el cual puedo leer los datos desde un archivo txt y mostrarlos por pantalla, la pregunta es como puedo hacer para insertar esos datos en el $array_persona.
Leer archivo
NombreCorreoPais
$line) {
$datos = explode(”,”, $line);
?>
Hola Rubén,
Consegui este otro script php, con el cual puedo leer los datos desde un archivo txt y mostrarlos por pantalla, la pregunta es como puedo hacer para insertar esos datos en el $array_persona.
NombreCorreoPais
$line) {
$datos = explode(”,”, $line);
?>
NombreCorreoPais
$line) {
$datos = explode(”,”, $line);
?>
Hola Rubén,
Consegui este otro script php, con el cual puedo leer los datos desde un archivo txt y mostrarlos por pantalla, la pregunta es como puedo hacer para insertar esos datos en el $array_persona.
NombreCorreoPais
$line) {
$datos = explode(”,”, $line);
?>
como agrego el codigo?
Hola Rubén,
Consegui este otro script php, con el cual puedo leer los datos desde un archivo txt y mostrarlos por pantalla, la pregunta es como puedo hacer para insertar esos datos en el $array_persona.
no pude colocar el codigo, aqui les dejo el link
http://www.webtaller.com/construccion/lenguajes/php/lecciones/leer-archivo-texto-php.php
Hola Rubén, mi pregunta o necesida de que me ayudes es la siguiente. como ago para insertar varios registro desde un formulario de 5 usuarios a la ves. nombre, apellido.