Как на php через подготовленные запросы делать вставку в БД сразу нескольких строк? Есть код:$command = \Yii::$app->db->createCommand(
"INSERT DELAYED INTO table_name
(id, phone, title, name, price)
VALUES
(:id, :phone, :title, :name, :price);");
$command->bindValues([":id" => $id,
":phone" => $phone,
":title" => $title,
":name" => $name,
":price" => $price]);
$command->query();
Можно ли как-то вставлять по такому принципу сразу несколько строк?

21 Авг 2019 в 07:03
194 +1
0
Ответы
1

Да, можно вставить несколько строк сразу с помощью подготовленных запросов. Для этого можно сгенерировать нужное количество параметров и значений и объединить их в один запрос. Например:

$command = \Yii::$app->db->createCommand("INSERT DELAYED INTO table_name (id, phone, title, name, price) VALUES ");
$values = [];
foreach($data as $row) {
$values[] = "(:id{$row['id']}, :phone{$row['phone']}, :title{$row['title']}, :name{$row['name']}, :price{$row['price']})";
$command->bindValues([
":id{$row['id']}" => $row['id'],
":phone{$row['phone']}" => $row['phone'],
":title{$row['title']}" => $row['title'],
":name{$row['name']}" => $row['name'],
":price{$row['price']}" => $row['price']
]);
}
$command->sql .= implode(", ", $values);
$command->query();

Где $data - это массив с данными для вставки. В данном примере мы формируем строку запроса, добавляя параметры для каждой строки вставки.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир