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 просмотра
Решения вопроса 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 и вставлять в запрос. Хотя для внутреннего сайта школы, наверно, сойдёт, вряд ли там будет много хакеров.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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