我有一个只返回一个值(不是一行,而只是一个"事物")的 SELECT 查询。它看起来像
SELECT IF( EXISTS( SELECT * FROM `Blah` WHERE <whatever> ), 1, 0);
我试着摆弄mysqli_result::fetch_assoc
,mysqli_result::fetch_object
和mysqli_result::fetch_array
,他们都非常奇怪。对于这样的特殊情况,是否有一个mysqli_result::fetch_string
,只输出一个我可以调用intval
的字符串?
你可以做:
SELECT IF( EXISTS( SELECT * FROM `Blah` WHERE <whatever> ), 1, 0) AS exists;
并使用上面的任何函数来获取第 0 行的"存在"列。
除了 casraf 的答案外,另一种选择可能是将计数纳入其中 - 您可能想稍后找出有多少人符合您的标准。当您在几年后重新访问代码时,可能更容易读回。
SELECT count(*) cnt FROM `Blah` WHERE <whatever>
您可以对"cnt"变量进行布尔检查(即计数为 0 将 == false),但也可以使用它来找出您有多少匹配项。