当没有行

时间:2016-03-01 20:21:07

标签: php mysql mariadb

运行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)
{....}

2 个答案:

答案 0 :(得分:0)

表达式$rowx =mysql_fetch_assoc($result)是一个不严格等同于false的赋值,因此创建了无限循环。但是,它可能会进行宽松的比较(!=而不是!==)。实际上,由于mysql_fetch_assoc()在成功时返回非空数组而在失败时返回false,因此您根本不需要进行比较。

有关完整参考,请参阅type comparisons上的文档。

答案 1 :(得分:0)

(其他问题)

COUNT(DISTINCT garmtypeid) as stylecount
...
group by  garmtypeid

- >

COUNT(*) as stylecount
...
group by  garmtypeid

您需要LEFT吗?

使用mysql_*界面;切换到mysqli_*PDO