出于某种原因,它不会进入我的if语句......
这可能是显而易见的事情,但已经很晚了,我已经被困在这里半小时了......
<?php
$id = $_GET['id'];
if ($id == "") {
//it goes here correctly
} else {
$result = mysql_query("SELECT * FROM posts WHERE id= $id");
if ($result == "0") {
//It does not go here.
} else {
//It goes here correctly
}
}
}
?>
非常感谢... - Luca
答案 0 :(得分:3)
我不知道您为什么希望0
作为mysql_query
的返回值。
From the manual(强调我的):
对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他语句返回 结果集,mysql_query()在成功时返回资源,或者返回FALSE 错误
[...]
使用mysql_num_rows()来查找为a返回的行数 SELECT语句或mysql_affected_rows()来查找多少行 受到DELETE,INSERT,REPLACE或UPDATE语句的影响。
mysql_query()也会失败,如果用户没有,则返回FALSE 有权访问查询引用的表。
所以,通过猜测,你真正想要的代码是:
$id = $_GET['id'];
if ($id == "") {
//it goes here correctly
} else {
$result = mysql_query("SELECT * FROM posts WHERE id= $id");
if ($result === false || mysql_num_rows($result) === 0) {
//It always goes to else statement.
} else {
//It goes here correctly
}
}
答案 1 :(得分:1)
如果您的查询没问题,那么mysql_query()会返回资源,$result == "0"
始终为false
。
答案 2 :(得分:0)
即使您没有该ID的任何数据,它也会返回“true”,因为您的查询已成功执行。 相反,你可以尝试这样:
$result = mysql_query("SELECT * FROM posts WHERE id= $id");
$rows=mysql_num_rows($result);
if($rows>0){
//you have data to work with
}
else{
//no data
}