我有以下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-block正在执行。怎么样?
答案 0 :(得分:5)
它将返回一个MySQL资源,而不是0行的FALSE
。它会在查询错误时返回FALSE
。
您可以改为mysql_num_rows()
。如果没有返回任何行,它将为0
。
您还有SQL注入漏洞。使用mysql_real_escape_string()
转义GET参数。
如果可以,请放弃mysql_*()
并使用PDO。
答案 1 :(得分:2)
它不会返回false
,因为SQL语句中没有错误,它只返回一个空结果集,因为没有匹配的记录。