为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕勒3428872 2019-03-08 10:33:11
业务需求是: 读取某个表中每一行的的字段A、B、C的值 如果C的值是0,就改成1或者2 代码大概是这么写的: $query = "SELECT * FROM table WHERE C = 0"; $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语句取值的结果?
查看完整描述

4 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

经测试 这段代码没有问题 检查下 $result是否在其他地方被重新赋值了

查看完整回答
反对 回复 2019-03-18
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

mysqli_fetch_array($result, MYSQLI_ASSOC) 然后 foreach 不就完了,而且你这个 $rows = mysqli_fetch_array($result) 不是一个恒等于? 你这个while 语句的结束条件是什么

查看完整回答
反对 回复 2019-03-18
?
郎朗坤

TA贡献1921条经验 获得超9个赞

如果条件判断可控,为啥不考虑直接写SQL批量更新?

查看完整回答
反对 回复 2019-03-18
?
月关宝盒

TA贡献1772条经验 获得超5个赞

$rows = mysqli_fetch_array($result)这里的等号最好用双等号"==",一个等于号=是赋值,两个等于号"=="才是数值比较

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 339 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信