2015-04-02 395 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數據庫連接。讓我知道你是否需要任何幫助。

相關問題