Ако използвате подготвен израз, можете да превъртите през вашия $JSON_data
масив с цикъл foreach и стартирайте INSERT
с тази част от данните.
Използването на подготвени изрази ще намали разходите за изграждане на заявката, просто изпращайки новите данни към базата данни при всяка итерация на цикъла.
$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();
}
Обърнете внимание, че първият аргумент на bind_param()
казва колко стойности ще обвързвате, както и типа за всяка стойност.s
съответства на низови данни, i
съответства на целочислени данни, d
съответства на двойно (с плаваща запетая) и b
съответства на двоични данни.
Още една предупредителна дума, НЕ цитирайте всички низови данни като s
datatype казва на mysql да очаква низ. Ако цитирате ?
в подготвеното изявление ще ви каже, че броят на параметрите е грешен. Ако цитирате низовете, те ще бъдат цитирани в mysql.
РЕДАКТИРАНЕ:
Ако искате да използвате една и съща парадигма (вмъкване на няколко реда с една заявка), има начини да го направите. Един от начините е да създадете клас, който ще агрегира bind_param
извиквания и направете един bind_param, когато изпълните заявката. Кодът за това е тук
.