Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Masseneinfügung über PHP

Wenn Sie eine vorbereitete Anweisung verwenden, können Sie Ihre $JSON_data durchlaufen -Array mit einer foreach-Schleife und führen Sie INSERT aus mit diesem Datenblock.

Die Verwendung vorbereiteter Anweisungen reduziert den Aufwand für die Erstellung der Abfrage, indem die neuen Daten einfach bei jeder Iteration der Schleife an die Datenbank gesendet werden.

$query = mysqli_prepare("INSERT INTO `MyTable` (`col1`,`col2`,`col3`)
    VALUES(?,?,?)");

foreach($JSON_data as $key => $value) {
    $query->bind_param('sss',$value["prop1"],$value["prop2"],$value["prop3"];
    $query->execute();
}

Beachten Sie, dass das erste Argument für bind_param() gibt an, wie viele Werte Sie binden werden, sowie den Typ für jeden Wert.
s entspricht String-Daten, i entspricht ganzzahligen Daten, d entspricht double (Fließkomma) und b entspricht binären Daten.

Noch ein Wort zur Vorsicht:NICHT zitieren Sie alle String-Daten als s datatype weist mysql an, einen String zu erwarten. Wenn Sie den ? zitieren In der vorbereiteten Anweisung wird Ihnen mitgeteilt, dass die Anzahl der Parameter falsch ist. Wenn Sie die Zeichenfolgen in Anführungszeichen setzen, werden sie in mysql in Anführungszeichen gesetzt.

BEARBEITEN:

Wenn Sie dasselbe Paradigma verwenden möchten (Einfügen mehrerer Zeilen mit einer Abfrage), gibt es Möglichkeiten, dies zu tun. Eine Möglichkeit besteht darin, eine Klasse zu erstellen, die den bind_param aggregiert Aufrufe und führen Sie einen bind_param aus, wenn Sie die Abfrage ausführen. Der Code dafür ist hier .