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