如何检查SELECT EXISTS是否返回值?

Sup*_*tch 26 php sql

我正在尝试快速确定user_ID是否是"目标"的所有者.我相信我的SQL查询很好,但我正在努力找到一种检查结果的好方法!

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

请注意,我想要一些简短而优雅的东西!我知道我可以做很长的事情(检查计数(*),返回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;
}
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 42

不要打扰EXISTS.直列式存在总会给一个包含行"真"或"假".

你正在寻找"零行"或"至少一行",所以将查询更改为这样的,然后检查返回的行数

SELECT 1 FROM goals WHERE goal_ID='$obj_id' AND user_ID='$user_id' LIMIT 1
Run Code Online (Sandbox Code Playgroud)


Bra*_*ace 10

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

if (@mysql_num_rows(mysql_query($query))!=1) {
     return false;
} else {
     return true;
}
Run Code Online (Sandbox Code Playgroud)

可以简化为:

return @mysql_num_rows(mysql_query($query)) == 1;
Run Code Online (Sandbox Code Playgroud)

  • 我在真实页面的"if/else"部分中有其他一些东西,所以我不能简化那么多,但我没有意识到你可以像这样添加'=='.谢谢,这很有用! (2认同)