webentwicklung-frage-antwort-db.com.de

Fügen Sie mehrere Zeilen mit einer Abfrage MySQL ein

Ich möchte ein Skript schreiben, mit der Funktion zum Einfügen von Abfragen.

Ich habe eine quantity-Eingabe in HTML-Form. und ich habe eine MySQL-Abfrage zum Einfügen von registered user in die Tabelle.

 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.

Zum Einfügen dieses Beispiels 3 mal. __ Irgendwelche Vorschläge? 

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

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

Hier sind einige Möglichkeiten, dies zu tun

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

oder 

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'

oder

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

In den meisten Fällen ist das Einfügen mehrerer Datensätze mit einer Insert-Anweisung in MySQL viel schneller als das Einfügen von Datensätzen mit der for/foreach-Schleife in PHP.

Angenommen, $ column1 und $ column2 sind Arrays mit derselben Größe, die von HTML-Formularen veröffentlicht werden.

Sie können Ihre Abfrage folgendermaßen erstellen:

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

Wenn Daten für zwei Datensätze gebucht werden, wird die Abfrage wie folgt:

INSERT INTOABLE (column1, column2) WERTE ('data', 'data'), ('data', 'data')

15
Ali Nawaz

Wenn Sie mehrere Werte einfügen möchten, sagen Sie aus mehreren Eingaben, die unterschiedliche Post-Werte haben, aber dieselbe Tabelle zum Einfügen verwenden. Verwenden Sie einfach:

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