如何使用 php mysqli 更新超过 99 的多行

Posted

技术标签:

【中文标题】如何使用 php mysqli 更新超过 99 的多行【英文标题】:how to update multiple rows more than 99 using php mysqli 【发布时间】:2019-03-05 03:15:20 【问题描述】:

我想更新多条记录,但我没有,因为这段代码只更新了 99 行。在 99 行之后它不会更新任何东西。我不明白这段代码有什么问题以及我的代码中设置的限制。代码如下:

<?php
    if(isset($_POST['Submit']))
    
    $count=count($_POST["id"]);

    for($i=0;$i<$count;$i++)

    $id= $_POST['id'][$i];
    $id2= $_POST['id2'][$i];
    $ird = $_POST['ird'][$i];
    $task_desp = $_POST['task_desp'][$i];
    $department = $_POST['department'][$i];
    $asigned = $_POST['asigned'][$i];
    $qty = $_POST['qty'][$i];
    $qty2 = $_POST['qty2'][$i];
    $persent = $_POST['persent'][$i];
    $frmdate = $_POST['frmdate'][$i];
    $todate = $_POST['todate'][$i];

    $sql="UPDATE sow2 SET id2='$id2',ird='$ird',task_desp='$task_desp', department='$department',asigned='$asigned', qty='$qty', qty2='$qty2', persent='$persent', frmdate='$frmdate', todate='$todate' WHERE id='$id'";

    $result = $con->query($sql);

    $status = "Record Updated Successfully. </br></br>";
    echo '<p style="color:#FF0000;">'.$status.'</p>';

    
    

    ?>

【问题讨论】:

我不想在任何方面进入这个极其糟糕的代码代码,但请阅读干净的代码和安全性。除此之外:您是否尝试过不使用 PHP 直接执行 SQL 查询? 是的,我直接尝试了 SQL Query,它是更新的 $count=count($_POST["id"]); 的结果是什么?请不要将此代码部署在公共服务器上。您对任何类型的 sql 注入持开放态度。 是的,我知道它不在公共服务器上 $count=count($_POST["id"]); 的结果是什么?您的数据库中是否存在每个 id?这应该可以帮助您找到解决方案。 【参考方案1】:

这段代码不安全,需要先防止SQL注入:

How can I prevent SQL injection in PHP?

我还建议创建事务以使其更快、更可靠。

问题可能与 max_input_vars 相关,这是表单变量数量的限制。 http://www.php.net/manual/en/info.configuration.php#ini.max-input-vars

检查是否有记录您正在尝试发送,您只能更新具有现有 id 的行

【讨论】:

【参考方案2】:

我正在使用 godaddy 托管,而 godaddy 不允许提交超过 90 行

解决办法

制作.htaccess php_value max_input_vars 10000

【讨论】:

以上是关于如何使用 php mysqli 更新超过 99 的多行的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 的 mysqli_query() 中转义双引号字符?

php MySQLi插入,更新和删除

如何修复 mysqli_fetch_array?我使用 php、mysqli 和 html

如何在遍历使用 mysqli_use_result 返回的行时执行 mysqli 查询? (PHP)

如何使用 mysqli->prepare 执行更新?

如何在 PHP 中正确使用 mysqli_free_result 函数