Задать вопрос
sevenuz
@sevenuz
Я люблю программировать и играть в футбол.

Есть код вставки в БД одной записи, как вставить список похожих записей?

if (isset($_POST['idpupil'])) { $idpupil = $_POST['idpupil']; }
if (isset($_POST['date'])) { $date = $_POST['date']; }
if (isset($_POST['idteacher'])) { $idteacher = $_POST['idteacher']; }
$come = 1;

$insert = mysqli_query($link, "INSERT INTO yoqlama (idpupil, date, come, idteacher) VALUES ('$idpupil', '$date', '$come', '$idteacher')");


Как вставить в базу массив? Пример: у меня есть 50 учеников в базе. Этот код для посещаемости учеников. Все ученики пришли в один день, но ID учеников разные....
  • Вопрос задан
  • 132 просмотра
Подписаться 2 Простой 11 комментариев
Решения вопроса 1
KodyWiremane
@KodyWiremane
Пони, Debian, LEMP, LAN, любитель
В форме повторить по количеству учеников:
<input ... name="idpupil[]">

В скрипте вместо последней строки:
foreach ($idpupil as $pupil) { mysqli_query($link, "INSERT INTO yoqlama(idpupil,date,come,idteacher) VALUES ('$pupil', '$date', '$come', '$idteacher')"); }

Это максимально костыльный вариант.

Более лучше:
$prepared = mysqli_stmt_init($link);
mysqli_stmt_prepare($prepared, "INSERT INTO yoqlama(idpupil,date,come,idteacher) VALUES (?, ?, ?, ?)");
$pupil = 0;
mysqli_stmt_bind_param($prepared, 'isii', $pupil, $date, $come, $idteacher);
// 'isii' , если date — строка, а ID и come — целые числа ( https://www.php.net/manual/ru/mysqli-stmt.bind-param.php )
foreach ($idpupil as $id) {
    $pupil = $id;
    mysqli_stmt_execute($prepared);
}
mysqli_stmt_close($prepared);


Не уверен, но примерно так. Кроме того, появляется защита от SQL-инъекций, плохо просто брать из $_POST и вставлять в запрос. Хотя для внутреннего сайта школы, наверно, сойдёт, вряд ли там будет много хакеров.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы