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