如何使用 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() 中转义双引号字符?
如何修复 mysqli_fetch_array?我使用 php、mysqli 和 html