Как сделать множественное добавление в бд 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 шт):
Если я правильно понял, у тебя пары значений по типу:
| 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);