Я пытаюсь вставить более 150 строк в базу данных, но почтовый запрос выполняется только для 91 строки, а в журнале консоли – ошибка внутреннего сервера
После вставки 91 строки она дает ошибку
У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' в строке 1
Моя форма HTML
<form id="mySpan4" style="display: block;"> <table class="fixed_headers"><tbody> <!-- SKIPPED TO OCC 90 Showing only 90 to 94 --> </tr><tr> <td>PRASAD DR <input type="hidden" name="student[90]" value="PRASAD DR"><input type="hidden" name="Reg[90]" value="13KQC31170"><input type="hidden" name="schoolid[90]" value="FT001"><input type="hidden" name="section[90]" value="A"><input type="hidden" name="standard[90]" value="III BCOM"><input type="hidden" name="Subject[90]" value="COM-42"><input type="hidden" name="date1[90]" value="16-01-07 00:00:00"><input type="hidden" name="UserType[90]" value="STUDENT"><input type="hidden" name="Userid[90]" value="admin"><input type="hidden" name="date_user_submitted[90]" value="2016-01-07 03:51:45 pm"></td> <td><input id="radio01[90]" name="present[90]" type="radio" value="Present"><label for="radio01[90]"><span></span></label></td> <td><input id="radio02[90]" name="present[90]" type="radio" value="Absent"><label for="radio02[90]"><span></span></label></td> <td><input id="radio03[90]" name="present[90]" type="radio" value="Leave"><label for="radio03[90]"><span></span></label></td> </tr><tr> <td>PRASAD KT <input type="hidden" name="student[91]" value="PRASAD KT"><input type="hidden" name="Reg[91]" value="13KQC31171"><input type="hidden" name="schoolid[91]" value="FT001"><input type="hidden" name="section[91]" value="A"><input type="hidden" name="standard[91]" value="III BCOM"><input type="hidden" name="Subject[91]" value="COM-42"><input type="hidden" name="date1[91]" value="16-01-07 00:00:00"><input type="hidden" name="UserType[91]" value="STUDENT"><input type="hidden" name="Userid[91]" value="admin"><input type="hidden" name="date_user_submitted[91]" value="2016-01-07 03:51:45 pm"></td> <td><input id="radio01[91]" name="present[91]" type="radio" value="Present"><label for="radio01[91]"><span></span></label></td> <td><input id="radio02[91]" name="present[91]" type="radio" value="Absent"><label for="radio02[91]"><span></span></label></td> <td><input id="radio03[91]" name="present[91]" type="radio" value="Leave"><label for="radio03[91]"><span></span></label></td> </tr><tr> <td>PRASANNA B <input type="hidden" name="student[92]" value="PRASANNA B"><input type="hidden" name="Reg[92]" value="13KQC31172"><input type="hidden" name="schoolid[92]" value="FT001"><input type="hidden" name="section[92]" value="A"><input type="hidden" name="standard[92]" value="III BCOM"><input type="hidden" name="Subject[92]" value="COM-42"><input type="hidden" name="date1[92]" value="16-01-07 00:00:00"><input type="hidden" name="UserType[92]" value="STUDENT"><input type="hidden" name="Userid[92]" value="admin"><input type="hidden" name="date_user_submitted[92]" value="2016-01-07 03:51:45 pm"></td> <td><input id="radio01[92]" name="present[92]" type="radio" value="Present"><label for="radio01[92]"><span></span></label></td> <td><input id="radio02[92]" name="present[92]" type="radio" value="Absent"><label for="radio02[92]"><span></span></label></td> <td><input id="radio03[92]" name="present[92]" type="radio" value="Leave"><label for="radio03[92]"><span></span></label></td> </tr><tr> <td>PRASANNAKUMAR K <input type="hidden" name="student[93]" value="PRASANNAKUMAR K"><input type="hidden" name="Reg[93]" value="13KQC31173"><input type="hidden" name="schoolid[93]" value="FT001"><input type="hidden" name="section[93]" value="A"><input type="hidden" name="standard[93]" value="III BCOM"><input type="hidden" name="Subject[93]" value="COM-42"><input type="hidden" name="date1[93]" value="16-01-07 00:00:00"><input type="hidden" name="UserType[93]" value="STUDENT"><input type="hidden" name="Userid[93]" value="admin"><input type="hidden" name="date_user_submitted[93]" value="2016-01-07 03:51:45 pm"></td> <td><input id="radio01[93]" name="present[93]" type="radio" value="Present"><label for="radio01[93]"><span></span></label></td> <td><input id="radio02[93]" name="present[93]" type="radio" value="Absent"><label for="radio02[93]"><span></span></label></td> <td><input id="radio03[93]" name="present[93]" type="radio" value="Leave"><label for="radio03[93]"><span></span></label></td> </tr><tr> <td>PREETHI CR <input type="hidden" name="student[94]" value="PREETHI CR"><input type="hidden" name="Reg[94]" value="13KQC31175"><input type="hidden" name="schoolid[94]" value="FT001"><input type="hidden" name="section[94]" value="A"><input type="hidden" name="standard[94]" value="III BCOM"><input type="hidden" name="Subject[94]" value="COM-42"><input type="hidden" name="date1[94]" value="16-01-07 00:00:00"><input type="hidden" name="UserType[94]" value="STUDENT"><input type="hidden" name="Userid[94]" value="admin"><input type="hidden" name="date_user_submitted[94]" value="2016-01-07 03:51:45 pm"></td> <td><input id="radio01[94]" name="present[94]" type="radio" value="Present"><label for="radio01[94]"><span></span></label></td> <td><input id="radio02[94]" name="present[94]" type="radio" value="Absent"><label for="radio02[94]"><span></span></label></td> <td><input id="radio03[94]" name="present[94]" type="radio" value="Leave"><label for="radio03[94]"><span></span></label></td> </tr><tr> <td>RADHA HN <input type="hidden" name="student[95]" value="RADHA HN"><input type="hidden" name="Reg[95]" value="13KQC31179"><input type="hidden" name="schoolid[95]" value="FT001"><input type="hidden" name="section[95]" value="A"><input type="hidden" name="standard[95]" value="III BCOM"><input type="hidden" name="Subject[95]" value="COM-42"><input type="hidden" name="date1[95]" value="16-01-07 00:00:00"><input type="hidden" name="UserType[95]" value="STUDENT"><input type="hidden" name="Userid[95]" value="admin"><input type="hidden" name="date_user_submitted[95]" value="2016-01-07 03:51:45 pm"></td>
JS
$(document).ready(function() { $('#mySpan4').submit(function(e) { $.ajax({ type: 'post', url: 'http://localhost/demo_TeacherApp/attendence_submit.php', // you should not use absolute addresses, with http:// . only relative paths data: $('#mySpan4').serialize(), success: function(data) { // log $sql string //<!-- $('#log').html(data); --> } }); // prevents the form from really submitting through the normal way e.preventDefault(); return false; }) });
PHP
<?php $servername = "localhost"; $username = "root"; $password = "xxxx"; $dbname = "xxxxx"; $conn = new mysqli($servername, $username, $password, $dbname); // ** insert data in to data base ** // $sql = "INSERT INTO attendance_master (StudentFirstName,AttendanceStatus,StudentRegID,SchoolID,Section,Standard,Subjects,AttendanceDate,UserType,Attendence_taken_by,Attendence_taken_date) VALUES "; // **hear the data or is calculated using student as a string the number of student names are passed the same number of data is inserted in to data base ** // foreach($_POST['Reg'] as $i=>$student) { // ** so the data is inserted in to data base ** // $sql .= sprintf("%s ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')" , ($i==0 ? '' : ',') // ** data from Ajax ** // , mysqli_real_escape_string($conn, trim($_POST['student'][$i])) , mysqli_real_escape_string($conn, trim($_POST['present'][$i])) , mysqli_real_escape_string($conn, trim($_POST['Reg'][$i])) , mysqli_real_escape_string($conn, trim($_POST['schoolid'][$i])) , mysqli_real_escape_string($conn, trim($_POST['section'][$i])) , mysqli_real_escape_string($conn, trim($_POST['standard'][$i])) , mysqli_real_escape_string($conn, trim($_POST['Subject'][$i])) , mysqli_real_escape_string($conn, trim($_POST['date1'][$i])) , mysqli_real_escape_string($conn, trim($_POST['UserType'][$i])) , mysqli_real_escape_string($conn, trim($_POST['Userid'][$i])) , mysqli_real_escape_string($conn, trim($_POST['date_user_submitted'][$i])) ); } // ** on success full function ** // if ($conn->query($sql)) { echo $sql;// **can do any thing to recognise if the data is inserted if this gives the out put then the data is shorly inserted in to data base ** // } ?>
Я замечаю, что в вашем HTML индексирование перескакивает с места происшествия 92 на 146.
Также скрытые поля, которые для PRASANNA B
имеют наличие 92, но радиокнопки имеют 145.
Это выглядит, когда вы создаете эту форму, что-то пошло не так с вашей стратификацией индексации! Возможно, это объяснит, почему все это начинает ошибаться при загрузке строки 92 в вашу базу данных
</tr><tr> <td>PRASANNA B <input type="hidden" name="student[92]" value="PRASANNA B"><input type="hidden" name="Reg[92]" value="13KQC31172"><input type="hidden" name="schoolid[92]" value="FT001"><input type="hidden" name="section[92]" value="A"><input type="hidden" name="standard[92]" value="III BCOM"><input type="hidden" name="Subject[92]" value="COM-38"><input type="hidden" name="date1[92]" value="16-01-07 00:00:00"><input type="hidden" name="UserType[92]" value="STUDENT"><input type="hidden" name="Userid[92]" value="admin"><input type="hidden" name="date_user_submitted[92]" value="2016-01-07 03:37:22 pm"></td> <td><input id="radio01[145]" name="present[145]" type="radio" value="Present"><label for="radio01[145]"><span></span></label></td> <td><input id="radio02[145]" name="present[145]" type="radio" value="Absent"><label for="radio02[145]"><span></span></label></td> <td><input id="radio03[145]" name="present[145]" type="radio" value="Leave"><label for="radio03[145]"><span></span></label></td> </tr><tr>
Хорошо, теперь мы опровергли эту идею! Давайте начнем с самого начала.
PHP имеет несколько параметров, которые могут быть превышены, т.е.
post_max_size. Это означало бы, что не весь массив сообщений принимался скриптом
max_input_vars Ограничение числа переменных <input>
которые будут приняты скриптом
Поскольку у вас есть переменная ввода по крайней мере 1950, которую я знаю об этом, возможно, это первая проверка. Поэтому посмотрите на свой файл php.ini
для обоих этих параметров и сообщите мне, что это такое.
Поэтому из вашего комментария кажется, что max_input_vars = 1000
недостаточно для этого скрипта, который имеет переменные не менее 1950 . Это определенно объяснит ошибку, которую вы получаете! 1000 по умолчанию я считаю, поэтому его в форме комментариев.
Так что php.ini
и сделайте max_input_vars = 2500
, чтобы быть в безопасности без ;
конечно.
Не забудьте перезапустить Apache после php.ini
изменений в php.ini
Если проблема в том, что вы достигли максимального размера POST, это не поможет, но в качестве примера использования подготовленных операторов для вставки данных это должно быть полезно. Используя данные формы, которые вы отправили на Pastebin в сочетании с этим кодом, он вставил ее удачно вставил 151 строку в db без ошибок (да, создал таблицу специально). Возможно, я должен добавить, что я отправил форму через POST без ajax!
<?php if( $_SERVER['REQUEST_METHOD']=='POST' ){ function filter( $conn, $var ){ return $conn->real_escape_string( filter_var( $var, FILTER_SANITIZE_STRING ) ); } $servername = "localhost"; $username = "root"; $password = "xxxx"; $dbname = "xxxxx"; $conn = new mysqli( $servername, $username, $password, $dbname ); /* I obviously used correct details for my db */ $sql='INSERT INTO `attendance_master` ( `StudentFirstName`, `AttendanceStatus`, `StudentRegID`, `SchoolID`, `Section`, `Standard`, `Subjects`, `AttendanceDate`, `UserType`, `Attendence_taken_by`, `Attendence_taken_date` ) VALUES ( ?,?,?,?,?,?,?,?,?,?,? )'; $stmt=$conn->prepare( $sql ); foreach( $_POST['Reg'] as $i => $student ) { try{ $stud = filter( $conn, $_POST['student'][$i] ); $pres = filter( $conn, $_POST['present'][$i] ); $reg = filter( $conn, $_POST['Reg'][$i] ); $id = filter( $conn, $_POST['schoolid'][$i] ); $sect = filter( $conn, $_POST['section'][$i] ); $stan = filter( $conn, $_POST['standard'][$i] ); $subj = filter( $conn, $_POST['Subject'][$i] ); $date = filter( $conn, $_POST['date1'][$i] ); $type = filter( $conn, $_POST['UserType'][$i] ); $uid = filter( $conn, $_POST['Userid'][$i] ); $subm = filter( $conn, $_POST['date_user_submitted'][$i] ); $stmt->bind_param('sssssssssss', $stud, $pres, $reg, $id, $sect, $stan, $subj, $date, $type, $uid, $subm ); if( !$stmt->execute() ) throw new Exception( 'Insert failed @ row'.$i, 400 ); } catch( Exception $e ){ echo $e->getMessage(); continue; } } $stmt->close(); $conn->close(); } ?>