Вы не можете объединить несколько запросов таким образом (даже если вы используете mysqli_multi_query()
, вам нужно разделить запросы с помощью ;
, что вы не делали).
Вы можете написатьодин INSERT
запрос, который имеет несколько списков значений после VALUES
:
INSERT INTO tablename (col, col, ...) VALUES (val, val, ...), (val, val, ...), ...
Так напишите его так:
$query = "insert into attendance(id, attendanceStudentName, attendanceStudentRollNo, attendanceClass, attendanceStatus) VALUES ";
$values_array = [];
for($count = 0; $count<count($attendanceStudentName); $count++)
{
$attendanceStudentName_clean = mysqli_real_escape_string($conn, $attendanceStudentName[$count]);
$attendanceStudentRollNo_clean = mysqli_real_escape_string($conn, $attendanceStudentRollNo[$count]);
$attendanceClass_clean = mysqli_real_escape_string($conn, $attendanceClass[$count]);
$attendanceStatus_clean = mysqli_real_escape_string($conn, $attendanceStatus[$count]);
$values_array[] = "(NULL, '$attendanceStudentName_clean', '$attendanceStudentRollNo_clean', '$attendanceClass_clean', '$attendanceStatus_clean')";
}
$query .= implode(', ', $values_array);
Другой способ, который лучше избегает внедрения SQL, этоиспользовать подготовленный оператор, а затем выполнить его в цикле.
$query = "insert into attendance(id, attendanceStudentName, attendanceStudentRollNo, attendanceClass, attendanceStatus)
VALUES (NULL, ?, ?, ?, ?)";
$stmt = $conn->prepare($query);
$stmt->bind_param("ssss", $name, $rollno, $class, $status);
for($count = 0; $count<count($attendanceStudentName); $count++)
{
$name = $attendanceStudentName[$count];
$rollno = $attendanceStudentRollNo[$count];
$class = $attendanceClass[$count];
$status = $attendanceStatus[$count];
$stmt->execute();
}