2011-09-20 63 views
0

如何從函數中檢索mysql_query?例如:php返回mysql_query

class A() { 
    ... 
    function getAll($l=1) { 
     ... 
     $result = mysql_query($query); 
     return $result 
    } 
    ... 
} 

$a = new A(); 
$r = $a -> getAll(2); 
while ($row = mysql_fetch_assoc($r)) { 
    // do something 
} 

上面的代碼在我從函數返回$ result的時候不起作用。但是,當我在getAll函數中使用mysql_fetch_assoc函數時,它完美地工作。所以基本上,我的問題是如何從函數返回一個MySQL結果集?

**編輯**

我其實沒有錯誤。上面使用的while語句將不會執行。但是,當我在getAll函數中執行它時,查詢完美工作。

+0

什麼不行?你有什麼錯誤嗎?沒有行返回? – regality

+0

你有錯誤嗎?在'return $ result;'之後你需要';'嗎? – labue

+0

將你的'mysql_query'行改爲這個,看看它是否只是出錯:'$ result = mysql_query($ query)或trigger_error(mysql_error());' –

回答

3

不要從查詢返回的結果資源,而是返回從資源中提取的數據:

$data = array(); 

while ($row = mysql_fetch_assoc($result)) { 
    $data[] = $row; 
} 

return $data; 
1

絕對是它的工作原理。

做一個var_dump($r)以確保您獲得資源。如果沒有,請仔細檢查你的SQL。它可能有錯誤。

此外,在你的腳本的頂部上的其他錯誤報告轉(以及檢查mysql_error)爲更好的線索,什麼是錯的:

ini_set('display_errors', true); 
error_reporting(E_ALL); 

你編輯你的代碼的多少,因此很難進一步調查。 只要確保你的方法沒有關閉mysql連接。