2015-04-02 149 views
-1

我得到这个错误与我的代码。为什么会发生这种情况?警告:mysql_num_rows()期望参数1是资源,布尔给定。为什么?

在此先感谢!

警告:mysql_num_rows()预计参数1是资源,在布尔C中给出:\瓦帕\ WWW \ busreserv \的index.php上线15

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

**警告:**您正在使用已弃用的数据库API!考虑使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)。 (必须的,可以写一个bot来写这些注释或者放弃。*#叹气*)http://stackoverflow.com/a/12860046/3000179 – 2015-04-02 10:17:29

+0

另外看看[mysql_fetch_array()期望参数1是资源(或mysqli_result),布尔给定](http://stackoverflow.com/q/2973202/2581872)。 – hichris123 2015-04-02 10:51:27

回答

2

mysql_query PHP public documentation

返回值

对于SELECT,SHOW,d ESCRIBE,EXPLAIN和其他返回resultset的语句,mysql_query()在成功时返回一个资源,或者在错误时返回FALSE。

这意味着您的SQL查询是不是被成功和正在返回而不是有效的SQL游标FALSE布尔值。在调用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 { 
    ... 
} 
+0

没错。你的问题在mysql_query中,而不是在num_rows中。不知道,但也许注册和密码是mysql的关键字,你应该尝试:select * from \'register \'where email ='$ name'AND \'password \'='$ pass' – 2015-04-02 10:14:27

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或准备语句作为mysql函数已被弃用。

请注意,$db_conx是config.php文件中的mysql数据库连接。让我知道你是否需要任何帮助。

相关问题