Ist das legal?Mehrere mysql INSERT-Anweisungen in einer Abfrage php
$string1= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
mysql_query($string1) or die(mysql_error());
Ist das legal?Mehrere mysql INSERT-Anweisungen in einer Abfrage php
$string1= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
$string1 .= "INSERT INTO....;";
mysql_query($string1) or die(mysql_error());
Für das, was es wert ist, und je nachdem, wenn Sie die gleichen Daten in die gleichen Tabellen einfügen, it's much better to insert multiple values with the one insert z.B.
INSERT INTO a VALUES (1,23),(2,34),(4,33);
INSERT INTO a VALUES (8,26),(6,29);
Besonderer Dank für den Hinweis auf die Seite "Geschwindigkeit einfügen". – SarathChandra
Nein, sie sind separate Abfragen, und müssen als solche bezeichnet werden.
Nein, mysql_query()
lässt nur jeweils eine Abfrage zu.
Sie können mehrere Zeilen wie folgt einfügen:
INSERT INTO table (col1, col2)
VALUES (1, 2), (3, 4), (5, 6)
Dieser ist besser - es ist wichtig, die Feldnamen anzugeben, in die Sie die Daten ablegen ! – itsricky
Im Allgemeinen ist das gültige SQL da jede Anweisung mit einem Semikolon endet, aber PHP ermöglicht es Ihnen nicht mehr als eine Abfrage zu einem Zeitpunkt zu senden, um gegen SQL-Injection-Angriffe zu schützen, die ein ausnutzen könnten schlecht geschriebenes Skript.
Sie können immer noch eine Syntax wie:
INSERT INTO foo VALUES ('a1', 'b1'), ('a2', 'b2');
Von MySQL Entwickler Unterstützung MySQL dev forum
INSERT INTO table (artist, album, track, length)
VALUES
("$artist", "$album", "$track1", "$length1"),
("$artist", "$album", "$track2", "$length2"),
("$artist", "$album", "$track3", "$length3"),
("$artist", "$album", "$track4", "$length4"),
("$artist", "$album", "$track5", "$length5");
So geht so normal wie einfügen immer:
Happy Einfügen mehrerer Werte mit einer Insert-Anweisung. :)
Kopieren/Einfügen Beispiel innerhalb einer Funktion und eine Schleife (ids annimmt $ ein Array)
public function duplicateItem($ids)
{
if (isset($ids[0])){ //at least one item
$sqlQuery = "INSERT INTO items (item_id, content) VALUES ";
for($i=0; $i<count($ids); $i++) {
if ($i == count($ids)-1){
$sqlQuery .= "(".$ids[$i][0].", '".$ids[$i][1]."');";
}else{
$sqlQuery .= "(".$ids[$i][0].", '".$ids[$i][1]."'),";
}
}
mysql_query($sqlQuery) or die('Error, insert query failed: '.mysql_error());
}
}
Es ist besser, die Verkettung zu vermeiden. Verwende 'implode()'. Einzelheiten hierzu finden Sie unter [Antwort] (http://stackoverflow.com/a/780046/4040525). –
Warum ist die Verwendung von implode() in diesem Fall vorteilhaft? In der obigen Frage haben wir normale SQL-Anweisungen. In der Antwort darauf verweisen Sie auf eine große Menge an Text (z. B. 1000 Einfügungen großer Texte) und, ja, in diesem Fall ist es gut, die Verkettung zu vermeiden. –
Ich weiß.Es ist OK, Verkettung hier zu verwenden. Gestern bemerkte ich beide Antworten und dachte, es wäre besser, 'implode()' als Faustregel zu verwenden. –
INSERT INTO table (a,b) VALUES (1,2), (2,3), (3,4);
ich mein Problem mehrere Abfrage auf meinem PHP-Projekt mit dieser Methode Mysqli läuft ausgewertete [Mysqli .multi-query.] (http://us2.php.net/manual/en/mysqli.multi-query.php) –