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

This entry was posted on Wednesday, April 2nd, 2008 at 10:24 pm and is filed under Desarrollo Web, PHP, Soluciones. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

12 Responses to “Insertar multiples registros en una sola consulta con MYSQL y PHP”

  1. ana on July 20th, 2008 at 11:08 am

    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

  2. Brenda on December 8th, 2008 at 7:20 pm

    cholo revisa tu codigo me he psado 3 horas leyendo tu codigo y no funcaba

  3. Janckos on April 12th, 2009 at 12:25 pm

    buena explicacion.

  4. David on May 21st, 2009 at 7:31 am

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

  5. jereny on November 6th, 2009 at 10:32 am

    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…

  6. jereny on November 6th, 2009 at 10:58 am

    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);
    ?>

  7. jereny on November 6th, 2009 at 10:59 am

    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);
    ?>

  8. jereny on November 6th, 2009 at 11:00 am

    NombreCorreoPais
    $line) {
    $datos = explode(”,”, $line);
    ?>

  9. jereny on November 6th, 2009 at 11:01 am

    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);
    ?>

  10. jereny on November 6th, 2009 at 11:01 am

    como agrego el codigo?

  11. jereny on November 6th, 2009 at 11:29 am

    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

  12. Eliu Florez on January 14th, 2010 at 7:01 am

    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.

Leave a Reply