2010-08-03 70 views
0

我在此代碼中的查詢有問題。這個問題是我以前有過的,$num = mysql_num_rows($result);部分給了我一個MySQL錯誤,表示它期望有一個資源。通常,當我遇到這個錯誤時,是因爲我在某處放錯了單引號,但在查找後我找不到任何問題,儘管此查詢比我通常需要處理的複雜一點。MySQL查詢結果不是資源

//connect to the database and stuff 

$last_year = idate("Y")-1; 
$month = date("m"); 
$day = date("d");         

$query = "SELECT bills.b_id, bills.c_id, bills.grand_total, bills.void, bills.date_added, 
       customers.b_name, customers.l_name, customers.f_name, customers.phone 
      FROM bills, customers 
      WHERE bills.c_id = customers.c_id 
       AND bills.void = '0' 
       AND date_added BETWEEN '".$last_year."-".$month."-".$day."' AND CURDATE()"; 
$result = mysql_query($query); 
mysql_close($link);     
$num = mysql_num_rows($result); 

編輯:

雖然我已經知道mysql_close()功能是不是我說幹就幹,刪除它,我的代碼仍然不正常工作的問題。這EXACT相同的代碼(查詢除外)在其他幾十頁中工作。 問題出在查詢,MySQL錯誤(如前所述)是mysql_num_rows() expects parameter 1 to be resource。我正在努力獲得具體的錯誤。

回答

1

爲您的代碼添加一些錯誤處理。

$result = mysql_query($query); 
if (!$result) { 
    echo 'the query failed: ', mysql_error(); 
    die; 
} 

(在「真實」生產代碼中,您可能不希望將實際查詢和錯誤消息顯示給任何任意用戶)。

還看到:http://docs.php.net/mysql_error

+0

我已經說過,錯誤是'mysql_num_row()'預期資源。 – ubiquibacon 2010-08-03 07:41:18

+1

'mysql_error'與PHP錯誤不一樣。前者將顯示查詢的問題,後者與腳本有關。 – Amber 2010-08-03 07:57:45

+0

謝謝,剛纔在@Col下評論。彈片的回答說,我不明白之前:) – ubiquibacon 2010-08-03 08:02:18

1
  1. 檢查,看看是否有mysql的錯誤。如果您尚未打開錯誤報告,請將其打開以進行開發(error_reporting(E_ALL);)。

  2. 嘗試等待關閉你的mysql連接,直到你完成了結果集。

+0

只有在填充$ results後鏈接纔會關閉。 – ubiquibacon 2010-08-03 07:43:11

0

在結束時mysql_close()函數嘗試。如果關閉MySQL連接,mysql_num_rows()不會檢索查詢結果之前,工作

$num = mysql_num_rows($result); 
. 
. 
//Any others mysql operations 
. 
. 
mysql_close($link); 
+0

它在具有不同(更簡單)查詢的近十幾個其他頁面上以相同的代碼工作。 – ubiquibacon 2010-08-03 07:41:56

0

您密切聯繫到MySQL。那就是問題所在。只是不要使用mysql_close(),因爲PHP可以自動處理它。

+0

只有在填充了'$ results'後鏈接纔會關閉。 – ubiquibacon 2010-08-03 07:42:31

0

「不是資源」錯誤意味着您的查詢失敗。
改變你的mysql_query調用以這種方式

$result = mysql_query($query) or trigger_error(mysql_error().$query); 

,看看有什麼不對您的查詢。
總是這樣保持聯繫每一個可能發生的錯誤

+0

謝謝,我沒有得到,你們要求我尋找一個具體的錯誤,雖然你遲到了,因爲我告訴你錯誤是'mysql_num_rows()期望參數1是一個資源「,但我是因爲你基本上告訴我要深入挖掘並找到爲什麼它不是資源。現在明白了 :) – ubiquibacon 2010-08-03 08:01:17