web-dev-qa-db-fra.com

Insérer plusieurs lignes avec une requête MySQL

Je veux écrire un script, avec une fonction pour insérer plusieurs requêtes ..__ laisse-moi mieux t'expliquer.

J'ai une entrée quantity sous forme html. et j’ai une requête MySQL à insérerregistered user dans la table . Je souhaite donc que ma fonction insère cette requête "fois".

 mysql_query("INSERT INTO `pxlot` (realname,email,address,phone,status,regtime,ip) 
 VALUES ('$realname','$email','$address','$phone','0','$dateTime','$ip')")
 or die (mysql_error()); // Inserts the user.

Pour insérer ceci par exemple 3 fois . Des suggestions? 

38
CBeTJlu4ok
 INSERT INTO table (a,b) VALUES (1,2), (2,3), (3,4);

http://dev.mysql.com/doc/refman/5.5/fr/insert.html

88

Voici quelques façons de le faire

INSERT INTO pxlot (realname,email,address,phone,status,regtime,ip) 
select '$realname','$email','$address','$phone','0','$dateTime','$ip' 
from SOMETABLEWITHTONSOFROWS LIMIT 3;

ou 

INSERT INTO pxlot (realname,email,address,phone,status,regtime,ip) 
select '$realname','$email','$address','$phone','0','$dateTime','$ip'
union all select '$realname','$email','$address','$phone','0','$dateTime','$ip'
union all select '$realname','$email','$address','$phone','0','$dateTime','$ip'

ou

INSERT INTO pxlot (realname,email,address,phone,status,regtime,ip) 
values ('$realname','$email','$address','$phone','0','$dateTime','$ip')
,('$realname','$email','$address','$phone','0','$dateTime','$ip')
,('$realname','$email','$address','$phone','0','$dateTime','$ip')
18

Dans la plupart des cas, l'insertion de plusieurs enregistrements avec une seule instruction Insert est beaucoup plus rapide dans MySQL que l'insertion d'enregistrements avec une boucle for/foreach dans PHP.

Supposons que $ column1 et $ column2 sont des tableaux de même taille publiés sous forme HTML.

Vous pouvez créer votre requête comme ceci:

<?php
    $query = 'INSERT INTO TABLE (`column1`, `column2`) VALUES ';
    $query_parts = array();
    for($x=0; $x<count($column1); $x++){
        $query_parts[] = "('" . $column1[$x] . "', '" . $column2[$x] . "')";
    }
    echo $query .= implode(',', $query_parts);
?>

Si des données sont enregistrées pour deux enregistrements, la requête devient:

INSERT INTO TABLE (column1, column2) VALEURS ('data', 'data'), ('data', 'data')

15
Ali Nawaz

Si vous souhaitez insérer plusieurs valeurs, par exemple, à partir de plusieurs entrées ayant différentes valeurs de publication mais la même table dans laquelle insérer, utilisez simplement:

mysql_query("INSERT INTO `table` (a,b,c,d,e,f,g) VALUES 
('$a','$b','$c','$d','$e','$f','$g'),
('$a','$b','$c','$d','$e','$f','$g'),
('$a','$b','$c','$d','$e','$f','$g')")
or die (mysql_error()); // Inserts 3 times in 3 different rows
0
MEX