2014-01-12 59 views
0

新增類。方法返回資源ID#14 PHP/MySQL

public function get_feed($member_id) { 



    $sql = "SELECT mc. * , cp. * 
      FROM `my_connections` mc 
      LEFT JOIN `thoughts` cp ON cp.`member_id` = mc.`connection_id` 
      WHERE mc.`member_id` = '".$member_id."' 
      AND mc.`approved` = 1"; 

    $result = @mysql_query($sql,$db); check_sql(mysql_error(), $sql, 0); 

    //echo '<pre>'.$sql.'</pre>'; 

      return $result; //this returns Resource id#14 or NULL 


    /*while($list = mysql_fetch_array($result)) { 

     $feed_item[] = $list; 
    } 

    return $feed_item;*/ 

}// EO get_feed() 

,當我把它叫做

$feed = new my_feed; 

echo $feed->get_feed($uid); 

返回null。

但是,當我在方法外使用相同的SQL時,它會返回預期結果。

我應該在上面的查詢中返回什麼。

+1

$ db看起來像您的連接字符串,並且您在函數內部使用,所以您可能需要使用全局$ db;在使用它之前在函數內部。 –

+1

$ db?看起來像一個範圍問題 – 2014-01-12 19:44:25

+3

也許如果你沒有抑制你的'mysql_query'調用的錯誤,你會明白爲什麼它失敗。 – jszobody

回答

3

幾件事情:

  1. 你抑制的錯誤,讓自己在黑暗中:

    $result = @mysql_query($sql,$db); // Remove the @ symbol

  2. 然後,您應該發現$db由於範圍而不是有效的數據庫連接對象。確保將它設置爲類變量,然後參考$this->db

  3. 您的Resource id#14結果是預期的,這就是mysql_query返回的結果。您可以使用各種mysql_fetch_*方法在此解析它,或者直接返回它並讓調用方處理分析。

  4. 停止使用mysql_*方法!儘可能地切換到mysqliPDO(我知道這可能需要一些遺留應用程序的時間)。

1

$result總是返回Resource id#14是php的方式搞定,讓你的數據使用函數PHP有,像mysql_fetch_arraymysql_fetch_assoc

$result = @mysql_query($sql,$db); check_sql(mysql_error(), $sql, 0); 

while($list = mysql_fetch_array($result)) { 

    $feed_item[] = $list; 
} 

return $feed_item; 

$feed _item取水的時候將有查詢結果到一個數組

注: Why shouldn't I use mysql_* functions in PHP?

儘量避免抑制像@mysqli_query@您需要得到錯誤的錯誤調試