在空表上的PHP中的SQL查询返回什么?

joh*_*een 1 php mysql

我有以下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
       } ?>
Run Code Online (Sandbox Code Playgroud)

表forum_threads为空,因此查询应根据http://php.net/manual/en/function.mysql-query.php中的文档返回'false',并且'else'块应该被执行.然而,奇怪的是,if-block正在执行.怎么会?

ale*_*lex 5

它将返回一个MySQL资源,而不是FALSE0行.它将返回FALSE查询错误.

你可以检查一下mysql_num_rows().0如果没有返回任何行,那将是.

您还有SQL注入漏洞.逃避GET param mysql_real_escape_string().

如果可以的话,就放弃mysql_*()并使用PDO.