Javascript PHP不使用ajax将超过91行的表单数据插入数据库

Javascript PHP不使用ajax将超过91行的表单数据插入数据库,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我正在尝试向数据库中插入超过150行,但post请求仅针对91行,控制台日志显示内部服务器错误 在插入91行之后,它给出了错误 您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取第1行“”附近要使用的正确语法 我的HTML表单 <form id="mySpan4" style="display: block;"> <table class="fixed_headers"><tbody> <!-- SKIPPED TO OCC 90 S

我正在尝试向数据库中插入超过150行,但post请求仅针对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  D R <input type="hidden" name="student[90]" value="PRASAD  D R"><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 K T <input type="hidden" name="student[91]" value="PRASAD K T"><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 C R <input type="hidden" name="student[94]" value="PREETHI C R"><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 H N <input type="hidden" name="student[95]" value="RADHA H N"><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>

普拉萨德
普拉萨德K T
普拉桑纳B
普拉桑纳库马尔K
普雷西C R
拉达H N
JS

$(文档).ready(函数(){
$('#mySpan4')。提交(函数(e){
$.ajax({
键入:“post”,
网址:'http://localhost/demo_TeacherApp/attendence_submit.php“,//不应使用绝对地址,而应使用http://。仅使用相对路径
数据:$('#myspan')。序列化(),
成功:功能(数据){
//日志$sql字符串
//
}
});
//防止表单通过正常方式真正提交
e、 预防默认值();
返回false;
})
});
PHP


如果问题是您已经达到了最大POST大小,那么这不会有帮助,但是作为使用准备好的语句插入数据的示例,这应该是有用的。使用您在Pastebin上发布的表单数据,并结合此代码,它很高兴地将151行插入数据库,没有错误(是的,专门创建了一个表)~也许我应该补充一点,我通过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();
    }
?>

我注意到,在HTML中,索引从occurance 92跳到occurance 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>

普拉桑纳B
好了,现在我们反驳了这个观点让我们从头开始

PHP有几个参数可能会被超过,即

  • post_max_size,这意味着脚本没有接收到所有post数组

  • 最大输入变量,用于限制脚本将接受的
    变量的数量

因为您至少有1950输入变量,据我所知,这可能是第一个要检查的变量。请查看
php.ini
文件中的这两个参数,并告诉我它们是什么

因此,从您的评论来看,
max\u input\u vars=1000
对于这个至少包含1950变量的脚本来说是不够的。这肯定能解释你所得到的错误!我认为1000是默认值,这就是为什么它是以评论的形式出现的

因此,修改
php.ini
并使
max\u input\u vars=2500
,只是为了安全起见,没有
当然可以评论


在对
php.ini

进行更改后,不要忘记重新启动Apache,向我们显示实际的错误消息,然后我们可能会提供帮助!我想你可能错过了一个技巧——使用准备好的语句,而不是大量连接的stringMy Thinks@RamRaider使用参数准备语句一次,然后执行准备好的语句任意次数。这将减少查询的执行时间,因为查询只需要编译和优化一次。您使用的是
mysqli\uu
,但没有得到任何benefits@RayonDabre我这样做是为了上课如果有200名学生我需要向数据库中插入200行在我的情况下,现在我有150名学生,但没有插入您是否达到服务器默认传输大小限制?使用像Fiddler2这样的工具来查看发生了什么,并向我们显示真正的错误:),该错误指示在sql语句中该位置传入的数据类型
s
-字符串,
i
-整数。与您在
sprintf
函数调用中所做的类似,除了没有
%
符号外,我再次尝试了它只是插入了91行剩余的it数据。尽管这不是实际的错误,但请继续使用这种类型的参数化和准备好的查询,因为它还提供sql注入保护,当用于多次执行同一查询时,将加快脚本的执行时间。这对thaks for ur support vl来说是有意义的。马上对其进行调查发现-最好看看表单最初是如何生成的~在打开
tbody
之后有一个虚假的关闭
标记tag@RiggsFolly正如我如上所述,我可以在网上发布所有html代码,因此我删除了其中一些不是问题OK,因此请编辑您的问题,并确保您发布的html在90到94之间是准确的。请参阅答案中的其他信息
<?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();
    }
?>
</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>