Pokud použijete připravený výpis, můžete přeskočit svá $JSON_data
pole se smyčkou foreach a spusťte INSERT
s tímto kusem dat.
Použití připravených příkazů sníží režii sestavování dotazu, jednoduše odesílá nová data do databáze při každé iteraci smyčky.
$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();
}
Všimněte si, že první argument funkce bind_param()
říká, kolik hodnot budete vázat, a také typ pro každou hodnotu.s
odpovídá řetězcovým datům i
odpovídá celočíselným datům, d
odpovídá double (plovoucí desetinná čárka) a b
odpovídá binárním datům.
Ještě jedno upozornění, NE uveďte jakákoli data řetězce jako s
datový typ říká mysql, aby očekával řetězec. Pokud uvedete ?
v připraveném výpisu vám řekne, že počet parametrů je špatný. Pokud uvedete řetězce, bude to citováno v mysql.
UPRAVIT:
Pokud chcete použít stejné paradigma (vložení více řádků do jednoho dotazu), existují způsoby, jak to udělat. Jedním ze způsobů je vytvořit třídu, která bude agregovat bind_param
zavolá a proveďte jeden bind_param, když spustíte dotaz. Kód pro to je zde
.