2012-08-05 112 views
0

給出首先讓我說,我環顧四周,找到類似的帖子,但沒有人幫助我,所以這就是爲什麼我我要求你幫忙。PHP的mysql錯誤:「mysql_fetch_assoc()期望參數1是資源,布爾在」

使用PHP,我試圖執行兩個SQL查詢。第一個查詢與INNER JOIN進行Select陳述,另一個是正常的select陳述。

這裏是我的代碼:

$conn = mysql_connect(DBHOST,DBUSER,DBPASS); 

mysql_select_db(DBNAME); 
$result = mysql_query(" 
     SELECT a.`role` AS 'role' 
     FROM authme 
     INNER JOIN a 
     ON `authme`.`username` = `a`.`username` 
     WHERE `authme`.`username` = 'vidhu'; 
", $conn); 
echo mysql_result($result, 0) . "<br />"; 

mysql_select_db(DBNAME); 
$result = mysql_query("SELECT `email` FROM `authme` WHERE `username` = 'vidhu'", $conn); 
echo mysql_result($result, 0) . "<br />"; 

所以,當我執行這個網頁是我所得到的:

Admin <--- Result from first query 

Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\Apache24\htdocs\test.php on line 12 <---- second query 

單獨執行這兩個查詢,工作正常,但兩者相結合時,我得到的是錯誤。有任何想法嗎?

感謝您的時間閱讀本文! Vidhu

+1

您不需要重複選擇相同的數據庫 - 只有當您確實需要更改默認數據庫時才需要。 – 2012-08-05 16:53:48

+2

請不要使用'mysql_ *'函數來編寫新代碼。他們不再維護,社區已經開始[棄用程序](http://goo.gl/KJveJ)。請參閱* [紅盒子](http://goo.gl/GPmFd)*?相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定哪些,[這篇文章](http://goo.gl/3gqF9)會幫助你。如果你選擇PDO,[這裏是很好的教程](http://goo.gl/vFWnC)。 – 2012-08-05 16:54:14

+0

[mysql_fetch_array()的可能的重複期望參數1是資源,布爾給出在選擇](http://stackoverflow.com/questions/2973202/mysql-fetch-array-expects-parameter-1-to-be-resource -boolean-given-in-select) – 2012-08-07 08:04:23

回答

2

如果失敗,mysql_query函數將返回布爾值FALSE。您正在使用結果而不檢查它是否失敗,因此您傳遞的是FALSE值而不是正確的結果。做mysql_query(query,connection)你應該總是使用or die(mysql_error());

,所以它看起來就像當

+1

更不用說他不應該使用'mysql_ *'了。但這是評論的故事。 – 2012-08-05 16:54:38

0

mysql_query("SELECT * FROM sometable") or die(mysql_error()); 

不僅會返回false,它將停止在錯誤的點和回聲準確的錯誤你使用MYSQL代碼。

相關問題