2011-06-28 70 views
0

Possible Duplicate:
PHP: Warning: sort() expects parameter 1 to be array, resource given警告:mysql_fetch_array()預計參數1是資源,布爾在

給我得到這個錯誤:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in

$sql = dbquery("SELECT * FROM `channels` WHERE `cat_slug` = ".$cat." "); 
while($row = mysql_fetch_array($sql)){ 
$category = $row["cat_name"]; 
$slug = $row["cat_slug"]; 
// other 
} 

和$貓可以是例如 「搞笑」

我如何更改代碼來完成它?

+0

是'的DBQuery()'用戶定義的函數? – cspray

+0

dbquery是PEAR - >查詢方法的拼寫錯誤,或者是腳本部分網站的複製/粘貼。也許你忘了包含這個函數的文件? –

回答

1

您使用PEAR所以你想先設置對象:

$db =& DB::connect('mysql://usr:[email protected]/dbname'); 
if (PEAR::isError($db)) { 
    die($db->getMessage()); 
} 

然後創建一個資源:

$res =& $db->query("SELECT * FROM `channels` WHERE `cat_slug` = '$cat'"); 

然後你就可以獲取一個數組,如果你fetchmod是設置爲訂購:

while ($res->fetchInto($row)) { 
    echo $row[0] . "\n"; 
} 

它看起來像你使用標準的PHP和PEAR的混合物。

在標準的PHP

,你需要做的是這樣的:

$sql = "SELECT * FROM channels WHERE cat_slug = '$cat'"; 
$res = mysql_query($sql, $conn) //where $conn is your db link stuff 

那麼你可以做一個獲取數組

+0

是的最後一個是問題所在。它適用於'$ sql = dbquery(「SELECT * FROM channels WHERE cat_slug ='$ cat'」);'謝謝。 – m3tsys

0

您在查詢語法錯誤和/或數據庫有其他錯誤。在您的DBQuery功能,你需要有類似:

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

將終止腳本和輸出的原因查詢失敗。

然而,鑑於您的查詢字符串,您的信息進入它,錯誤是由於查詢中缺少您的$cat各地報價:

SELECT ... WHERE `cat_slug`=funny; 

除非你的表中有一個字段名爲「搞笑「,這是一個語法錯誤。您需要:

SELECT ... WHERE `cat_slug`='funny'; 

(注意引號)。

相關問題