返回仅返回一个值的 SELECT 等效字符串


Return the string equivalent of a SELECT that only returns one value

我有一个只返回一个值(不是一行,而只是一个"事物")的 SELECT 查询。它看起来像

SELECT IF( EXISTS( SELECT * FROM `Blah` WHERE <whatever> ), 1, 0);

我试着摆弄mysqli_result::fetch_assocmysqli_result::fetch_objectmysqli_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),但也可以使用它来找出您有多少匹配项。