Als u een voorbereide instructie gebruikt, kunt u uw $JSON_data
. doorlopen array met een foreach-lus en voer de INSERT
. uit met dat deel van de gegevens.
Het gebruik van voorbereide instructies vermindert de overhead van het bouwen van de query, door simpelweg de nieuwe gegevens naar de database te sturen bij elke iteratie van de lus.
$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();
}
Merk op dat het eerste argument voor bind_param()
vertelt het hoeveel waarden u zult binden, evenals het type voor elke waarde.s
komt overeen met stringgegevens, i
komt overeen met integer data, d
komt overeen met dubbel (zwevende komma), en b
komt overeen met binaire gegevens.
Een ander woord van waarschuwing:doe NIET citeer alle tekenreeksgegevens, zoals de s
datatype vertelt mysql om een string te verwachten. Als je de ?
. citeert in de voorbereide verklaring zal het u vertellen dat het aantal parameters verkeerd is. Als je de strings citeert, worden ze geciteerd in mysql.
BEWERKEN:
Als u hetzelfde paradigma wilt gebruiken (meerdere rijen invoegen met één query), zijn er manieren om dit te doen. Eén manier is om een klasse te maken die de bind_param
. verzamelt oproepen en doe één bind_param wanneer u de query uitvoert. De code daarvoor is hier
.