Как на 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(); Можно ли как-то вставлять по такому принципу сразу несколько строк?
Да, можно вставить несколько строк сразу с помощью подготовленных запросов. Для этого можно сгенерировать нужное количество параметров и значений и объединить их в один запрос. Например:
Да, можно вставить несколько строк сразу с помощью подготовленных запросов. Для этого можно сгенерировать нужное количество параметров и значений и объединить их в один запрос. Например:
$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 - это массив с данными для вставки. В данном примере мы формируем строку запроса, добавляя параметры для каждой строки вставки.