我正在尝试快速确定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)