运行Lamp堆栈,现在使用MariaDB代替MySQL。
我运行选择查询,但如果未返回任何内容,则会出现无限错误循环,锁定数据库服务器并泛滥错误日志。
这是下面的代码。
使用MYSQL时没有问题。
所以现在我要先检查结果中的行数,然后绕过while循环。
我想念什么?我不想重构所有代码。
$sql="select COUNT(DISTINCT garmtypeid) as stylecount,garmtypeid as styleid,
count(objects.id) as itemqty,objectstyles.code,objectstyles.description,
objectstyles.bundleqty,sum(objectstyles.forbiddenitem) as forbiddenitem,
objectstyles.altdescription
from objects
left join objectstyles on objectstyles.id = objects.garmtypeid
where rfid in ($Taglist2)
group by garmtypeid ";
error_log("BUNDLLLE");
error_log($sql);
$result = mysql_query($sql);
while (($rowx =mysql_fetch_assoc($result))!==false)
{....}
最佳答案
表达式$rowx =mysql_fetch_assoc($result)
是一个严格不等于false
的赋值,因此会创建无限循环。但是,它可能具有宽松的比较(!=
而不是!==
)。实际上,由于mysql_fetch_assoc()
在成功时返回非空数组,而在false
失败时返回非空数组,因此您甚至都不需要进行比较。
有关完整参考,请参见type comparisons上的文档。