PHP关于while循环中修改选取条件出现的错误

我是老毛 2018-02-02 02:19:36
业务需求是:
1. 读取某个表中每一行的的字段A、B、C的值
2. 如果C的值是0,就改成1或者2

代码大概是这么写的:

$query = "SELECT * FROM table";
$result = mysqli_query($link, $query);
if($result){
while ($rows = mysqli_fetch_array($result)){
if (判断条件为true) {
$query = "UPDATE table SET C = 1 WHERE A = '".$rows['A']."' AND B = '".$rows['B']."'";
mysqli_query($link, $query);
}else{
$query = "UPDATE table SET C = 2 WHERE A = '".$rows['A']."' AND B = '".$rows['B']."'";
mysqli_query($link, $query)
}
}
}

实际操作中,循环只会操作第一行,把第一行的C更新为1或者2,之后就出现错误,提示:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\***.php on line 21(即上述while的那行)

我理解第一个sql语句已经把表的行都获得了,我在判断后把相应的行的值改了,为什么会影响到第一个sql语句取值的结果?
...全文
1199 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
我是老毛 2018-03-12
  • 打赏
  • 举报
回复
感谢大家的关注,这个问题已经解决了,实际我在后面还有一个$rows = mysqli_fetch_array($result)的语句,跟中间调用的function里面用了同一个$result变量,导致function中的$result为空,出现这个错误。以后不能随便用同一个变量名了,谢谢大家的帮忙。
不会走路 2018-02-11
  • 打赏
  • 举报
回复
mysqli_query 返回一个资源标识符,你在执行完update语句之后,这个资源标识符就指向了这一次的执行,返回true。而不是之前的select返回结果集了。

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧