如何检查SELECT存在是否返回值?

2022-08-30 16:28:32

我试图快速确定一个user_ID是否是“目标”的所有者。我相信我的SQL查询很好,但我试图找到一种检查结果的好方法!

在这种情况下,无论我为$obj_id或$user_id放置什么,我的函数都返回true。我假设这是因为mysql_num_rows甚至将错误结果计为一行?那么我应该使用什么PHP代码来检查结果是否存在呢?

请注意,我想要一些简短而优雅的东西!我知道我可以走很长的路(检查count(*),返回mysql_assoc然后检查计数值......),但这是漫长而丑陋的。

有什么想法吗?谢谢!

$query = "SELECT EXISTS (SELECT * FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id')";
if (@mysql_num_rows(mysql_query($query))!=1) {
    return false;
} else {
    return true;
}

答案 1

不要为存在而烦恼。内联存在将始终给出行包含“true”或“false”。

您要查找“零行”或“至少一行”,因此请将查询更改为如下所示的内容,然后检查返回了多少行

SELECT 1 FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id' LIMIT 1

答案 2

我最喜欢gbn的答案,但我想指出这一点:

if (@mysql_num_rows(mysql_query($query))!=1) {
     return false;
} else {
     return true;
}

可以简化为:

return @mysql_num_rows(mysql_query($query)) == 1;

推荐