我遇到了一个非常恼人的问题,涉及在循环中更新多个表行。我的代码仅更新第一行而不更新其他行。事实上,它在更新其他行时会抛出错误。
这是我的原型简要代码:
// This query returns multiple rows
$query = "SELECT * FROM `table_name` ...";
$rs = mysqli_query($con, $query);
if(mysqli_num_rows($rs) != 0)
{
while($row = mysqli_fetch_array($rs))
{
$column_name= $row['column_name'];
...
...
...
// This update query only updates first row which matches the given condition. On second loop, it throws an error.
$update = "UPDATE `table_name` SET `column_name` = '" . mysqli_real_escape_string($con, $column_name) . "', ... ";
$rs = mysqli_query($con, $update);
}
}
所以我上面的代码只运行一次。第二次尝试时,它输出以下错误:
警告:mysqli_fetch_array()要求参数1为mysqli_result,第11行的C:\ wamp \ www \ test \ update.php中给出布尔值
这是我第一次尝试在循环中运行更新查询。我之前从未使用过它。我想我可能会以错误的方式做到这一点。什么是解决我的问题的解决方案或任何更好的方法来实现相同的目标?
修改
OOPS !!!更新查询后再次不必要$ rs,它让我抓狂!
答案 0 :(得分:2)
第一次更新后,您将覆盖$rs
值。因此,在此之后您无法再执行mysqli_fetch_array($rs)
,因为$rs
不是第一个mysqli_query()
的结果。
$rs2 = mysqli_query($con, $update);