我有以下PHP脚本:
<?php
$all_threads=mysql_query("SELECT * FROM forum_threads WHERE category=$_GET[id]");
if($all_threads){ ?>
//Do something.
<?php
}
else { ?>
//Do something else
<?php
} ?>表forum_threads为空,因此根据http://php.net/manual/en/function.mysql-query.php上的文档,查询应该返回'false‘,并且应该执行'else’块。然而,奇怪的是,if-块正在被执行。怎么会这样?
发布于 2011-06-13 10:22:49
它将在0行上返回一个MySQL资源,而不是FALSE。它将在查询错误时返回FALSE。
您可以改为检查mysql_num_rows()。如果没有返回任何行,则为0。
你也有一个SQL注入漏洞。用mysql_real_escape_string()避开GET参数。
如果可以,只需丢弃mysql_*(),使用PDO。
发布于 2011-06-13 10:23:26
它不会返回false,因为您的SQL语句中没有错误,它只是返回一个空结果集,因为没有匹配的记录。
https://stackoverflow.com/questions/6326122
复制相似问题