警告:mysql_num_rows()期望参数1是资源,给定布尔值。为什么?

时间:2015-04-02 09:49:53

标签: php mysql mysql-num-rows

我的代码出错了。为什么会发生这种情况?

提前致谢!

  

警告:mysql_num_rows()期望参数1为资源,第15行的C:\ wamp \ www \ busreserv \ index.php中给出布尔值

$sql = mysql_query("select * from register where email='$name' AND password='$pass'");
if(mysql_num_rows($sql)==0)

2 个答案:

答案 0 :(得分:2)

来自mysql_query PHP public documentation

  

返回值

     
    

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()会在成功时返回资源,或者在出错时返回FALSE。

  

这意味着您的SQL查询未成功,并且正在返回FALSE布尔值而不是有效的SQL游标。在调用mysql_num_rows之前进行验证:

$sql = mysql_query("select * from register where email='$name' AND password='$pass'");
if($sql == FALSE) {
    echo "Danger, Will Robinson! SQL statement failed";
} else if(mysql_num_rows($sql)==0) {
    echo "No results found...";
} else {
    ...
}

答案 1 :(得分:0)

经过测试和完全正常工作的代码。此代码不受sql注入保护,但它确实使用mysqli函数而不是您正在使用的mysql

$sql = "SELECT * FROM from register where email='$name' AND password='$pass'"; 
$query = mysqli_query($db_conx, $sql);
    while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){ 
     $email = $row["email"];
     ////get more rows here/////////
    }

但是,不推荐使用PDO或prepared语句作为mysql函数。

请注意$db_conx是config.php文件中的mysql数据库连接。如果您需要更多帮助,请告诉我。