Как вставить несколько строк с помощью именованных плейсхолдеров (PDO)?

Пример вставки нескольких строк с позиционными плейсхолдерами

$myArray = array(
3 => 'test3',
4 => 'test4',
5 => 'test5',
);

$statement = $pdo->prepare("INSERT INTO table1 (id, field1) VALUES (?, ?)");
foreach ($myArray as $id => $field1) // PS не могли бы объяснить этот цикл?
{
$statement->execute([$id,$field1]);
}
/* 
В результате в БД будут вставлены 3 строки:
id=3, field1=test3
id=4, field1=test4
id=5, field1=test5
 */


Пример вставки одной строки с именованными плейсхолдерами

// Ключи в массиве должны совпадать с именами плейсхолдеров.
$myArray = array('id' => 3, 'field1' => 'test3');

$statement = $pdo->prepare("INSERT INTO table1 (id, field1) VALUES (:id, :field1)");
$statement->execute($myArray);
// В результате в БД будет вставлена строка id=3, field1=test3.


А как вставить несколько строк (подобно позиционным)?

PS
И не могли бы вы объяснить цикл foreach ($myArray as $id => $field1) ?
Что значит as и причем тут стрелка (я понимаю что тут что то связанное с элементами массива, но что конкретно)
В том же c# foreach (int i in numbers) - всё ясно. Есть тип данных (переменная в цикле) массива i и есть сам массив
Для каждого целочисленного i (элемента) в массиве делай...и цикл.
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
RTFM: foreach
$data = [
  ['id' => 1, 'field1' => 'Вася'],
  ['id' => 2, 'field1' => 'Петя'],
  ['id' => 3, 'field1' => 'Миша']
];
foreach ($data as $row) {
    $stmt->execute($row);
}
или
$data = [
  1 => 'Вася',
  2 => 'Петя',
  3 => 'Миша'
];
foreach ($data as $id => $field1) {
    $stmt->execute(['id' => $id, 'field1' => $field1]);
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы