Перебирая массив мне надо вносить данные в базу:
$i=time();
foreach ($data as $k => $value){
if ($value[chek] == "on") {
$i++;
$sql = "INSERT INTO `orders` (`order_id`, `created`, `type`, `pair`, `price`, `quantity`, `amount`, `block_id`, `status`) VALUES ('$i', '$i', '$value[type]', '$value[pair]', '$value[price]', '$value[quantity]', '$value[summ]', '$value[block_id]', '$value[order_status]');";
mysqli_query($conn,$sql);
}
}
и это работает, строки в базе появляются. Но что-то внутри меня говорит мне, что не хорошо в цикле генерить запросы в БД, хоть явных противопоказаний к этому в документации нигде не видно. Но всё равно я делаю так:
$i=time();
foreach ($data as $k => $value){
if ($value[chek] == "on") {
$i++;
$sql = "INSERT INTO `orders` (`order_id`, `created`, `type`, `pair`, `price`, `quantity`, `amount`, `block_id`, `status`) VALUES ('$i', '$i', '$value[type]', '$value[pair]', '$value[price]', '$value[quantity]', '$value[summ]', '$value[block_id]', '$value[order_status]');";
$sqli .= $sql;
}
}
mysqli_query($conn,$sqli);
И вот во втором случае уже не работает. Хотя если я сделаю
echo $sqli;
и вручную вставлю полученные данные в phpMyadmin, то всё вставляется корректно, строки добавляются.
Вопрос: почему если $sqli корректно сформирована и вручную добавляется в базу, то не добавляется скриптом через
mysqli_query($conn,$sqli);
?
if (count($data)) {
$i = time();
$sql = "INSERT INTO `orders` (`order_id`, `created`, `type`, `pair`, `price`, `quantity`, `amount`, `block_id`, `status`) VALUES ";
foreach ($data as $k => $value){
if ($value[chek] == "on") {
$i++;
$type = $value['type'];
$pair = $value['pair'];
$price = $value['price'];
$quantity = $value['quantity'];
$summ = $value['summ'];
$block_id = $value['block_id'];
$order_status = $value['order_status'];
$sql .= "('$i', '$i', '$type', '$pair', '$price', '$quantity', '$summ', '$block_id', '$order_status'),";
}
}
$final_sql = substr($sql, 0, -1);
mysqli_query($conn, $final_sql);
}
В phpmyadmin можно вставлять несколько запросов через ";"
Настоятельно рекомендую прислушаться к совету про PDO
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости