2014-02-14 61 views
0

我有以下代碼:PHP的var_dump返回reesource(16)

function fetch_conversation_messages($conversation_id){ 
    $conversation_id = (int)$conversation_id; 

    $sql = "SELECT 
          `conversations_messages`.`message_date`, 
          `conversations_messages`.`message_date` > `conversations_members`.`conversation_last_view` AS `message_unread`, 
          `conversations_messages`.`message_text`, 
          `users`.`user_name` 
        FROM `conversations_messages` 
        INNER JOIN `users` ON `conversations_messages`.`user_id` = `users`.`user_id` 
        INNER JOIN `conversations_members` ON `conversations_messages`.`conversation_id` = `conversations_members`.`conversation_id` 
        WHERE `conversations_messages`.`conversation_id` = {$conversation_id} 
        AND `conversations_members`.`user_id` = {$_SESSION['user_id']} 
        ORDER BY `conversations_messages`.`message_date` DESC"; 

    $result = mysql_query($sql); 
    var_dump($result); 
    $messages = array(); 

    while (($row = mysql_fetch_assoc($result)) !== false){ 
      $messages[] = array(
        'date'   => $row['message_date'], 
        'unread'  => $row['message_unread'], 
        'text'   => $row['message_text'], 
        'user_name'  => $row['user_name'], 
      ); 
    } 
    var_dump($messages); 

}

它應該返回是這樣的:

Array ([0] => Array ([date] => 1322254667 [text] => one [user_name] => bob)) 

然而,返回

resource(16) of type (mysql result) array(0) { } 

我完全不熟悉PHP a nd MySQL,但我嘗試檢查錯誤,回顯mysql_error,並在發生錯誤時終止腳本,這表明SQL中沒有錯誤。

我不知道出了什麼問題以及如何解決問題。

請幫幫我。提前致謝。

+0

似乎您的查詢失敗? –

+0

我以爲但我看不到;你有什麼想法? – user3308065

+0

用'echo count($ messages)嘗試;'如果print 0沒有在你的查詢中找到結果 – 2014-02-14 06:27:58

回答

0

mysql_query當您的查詢有效時,預計函數將返回resource

對於您查看查詢的實際返回結果,請使用mysql_fetch_assoc,mysql_fetch_object等行獲取功能。在你的情況下,你把取得的值放在你的$ row變量中,所以你可以在其上使用var_dump。

while ($row = mysql_fetch_assoc($result)){ 
     var_dump($row); 
} 

試着檢查這個reference

+0

我試過了,輸出沒有變化 – user3308065

1

var_dump($result);顯示resource(16) of type (mysql result)表示您的查詢是OK的。

var_dump($messages);顯示空數組意味着查詢的結果爲空。

+0

你有什麼想法來解決它。會發送你的SQL文件是一個好主意,因爲我是一個完整的noob在MySQL和PHP – user3308065

+0

@ user3308065打印你的SQL,並嘗試在MySQL客戶端運行它,修復SQL是你的工作:)。 – xdazz

+0

我會嘗試,但我從來沒有這樣做過:( – user3308065

0

對於SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回結果集的語句,mysql_query()成功時返回resource,錯誤時返回FALSE。

對於其他類型的SQL語句,INSERT,UPDATE,DELETE,DROP等,mysql_query()在成功時返回TRUE或在錯誤時返回FALSE。