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

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

Войти через центр авторизации
Похожие вопросы
SaveTime Москва
от 160 000 ₽
ЧИТАЙ-ГОРОД Москва
от 140 000 до 210 000 ₽
ImageSpark Санкт-Петербург
от 60 000 ₽
06 апр. 2020, в 22:36
10000 руб./за проект
15 мар. 2020, в 17:59
500 руб./в час