运行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上的文档。

10-05 21:22