Как сделать множественное добавление в бд mysql php pdo?

Как можно сделать множественное добавление в бд?

Есть ту ду приложение. Пользователь заполнил одно поле, затем нажимает на плюс и заполняет второе поле и при нажатии на кнопку Отправить сохраняются в разных ячейках обе записи.

Как можно сделать? Вот такой код написал но не работает:

$stmt = $pdo->prepare("INSERT INTO post (id_d, name) VALUES (:id_d, :name)");
$stmt->bindParam(':id_d', $id_d);
$stmt->bindParam(':name',$name);
$in_arr = array("id_d","name");

foreach ($in_arr as $key => $val) {
    $stmt->execute();
} 

Пример массива? Я отправляю в бд данные id_d и name Значения могут быть разые в зависимости от того что пишет пользователь Например id_d = 1 , name = Текст1 И так может быть несколько записей

Есть input у которого есть name='name' И кнопка submit

Как лучше реализовать это? Количество записей может быть любое.


Ответы (1 шт):

Автор решения: Jean-Claude

Если я правильно понял, у тебя пары значений по типу:

id_d name
1 Конан
2 Варвар

Массив данных входящих у тебя неправильный, у тебя "плоский" массив с индексами 0, 1, 2 и так далее, для этой цели больше подойдет ассоциативный массив ключ-значение.

После подготовки запроса надо внутри цикла вставлять данные в сам запрос и выполнять его.

Пример работы на https://phpize.online

//масив данных
$input = [
    1 => 'name',
    2 => 'Dale',
    3 => 'Conan'
];

//запрос и подготовка
$query = "INSERT INTO post (id_d, name) VALUES (:id_d, :name)";
$query = $pdo->prepare($query);

//данные сунуть в бд
foreach ($input as $key => $name) {
    $query->execute([':id_d'=> $key,':name'=> $name]);
} 

//проверка
$query = "SELECT * FROM post";
$query = $pdo->prepare($query);
$query->execute();
$response = $query->fetchAll(PDO::FETCH_ASSOC);
print_r($response);
→ Ссылка