2013-05-19 62 views
1

我還是PHP的新手,並沒有開發知道如何解決大多數錯誤,當我預料他們。連接到我剛剛創建的數據庫時遇到問題。我正在從一本書中學習這個例子。瀏覽器不斷返回結果:「警告: mysql_fetch_array()期望參數1是資源,布爾給出在:'文件路徑'」中。我認爲$ result有問題,但請看看它。我的代碼如下所示:MySQL與PHP的MySQL數據庫連接MySQL擴展

<?php 

    // Open a MySQL connection 
    $link = mysql_connect('xxx', 'xxx', 'xxx'); 
    if(!$link) { 
     die('Connection failed' . mysql_error()); 
    } 

    // Select the database to work with 
    $db = mysql_select_db('test'); 
    if(!$db) { 
     die('Selected database unavailable: ' . mysql_error()); 
    } 

    // Create and execute a MySQL query 
    $sql = "SELECT artist_name FROM artists"; 
    $result = mysql_query($sql); 

    // Loop through the returned data and output it 
    while($row = mysql_fetch_array($result)) { 
     printf("Artist: %s<br />", $row['artist_name']); 
    } 

    // Free the memory associated with the query 
    mysql_free_result($result); 

    // Close the connection 
    mysql_close($link); 

?> 
+2

您使用舊的'mysql_ *'函數,它們已被棄用(請參閱[紅盒子](http://php.net/mysql_query))。切換到MySQLi或PDO。而'mysql_query'顯然返回'FALSE'。你的數據庫是什麼樣的? –

+0

嘗試調試readin mysql_error:'$ result = mysql_query($ sql)或者死(mysql_error());'。還暗示'mysql_ *'函數不推薦使用,而是使用'mysqli'或'PDO'。 – Fabio

回答

1

萬一失敗的mysql_query,它返回false,一個布爾值。當你傳遞給mysql_fetch_array函數(它需要一個mysql結果對象)時,我們會得到這個錯誤。確保您正在使用的查詢將獲取一些結果,或者您正在使用正確的列名稱。

你應該改用mysqli或PDO來像其他人所建議的那樣。

+1

最後一句不正確:使用準備好的語句,這些語句可通過MySQLi和PDO接口獲得。 –

+0

@marcel感謝您糾正:) –

+0

您的意思是Mysqli和PDO都支持準備好的聲明? –

-1

你的代碼沒有問題,問題出在你的查詢中。

更換

$result = mysql_query($sql); 

隨着

$result = mysql_query($sql) or die(mysql_error()); 

而且你會發現什麼是錯在你的查詢。