2012-12-26 77 views
0

我有這段代碼,當我運行它時完全擰緊了。它甚至不會拋出異常。它只是導致服務器錯誤。PDO抓取問題

try { 
     $stmt = $this->database->prepare(
       "SELECT * FROM news_posts"); 
     $result = $stmt->execute(); 
     $array = $result->fetch(PDO::FETCH_ASSOC); 
     print_r($array); 
    } catch (PDOException $e) { 
     echo "error?"; 
    } 
+1

檢查您的錯誤日誌。除非您有調試代碼的方法,否則不應編寫代碼,其中一部分是設置錯誤日誌記錄。 – goat

+0

那麼這個服務器錯誤是什麼?無論造成它應該在你的錯誤日誌中。另外,如果你這樣做,確保'display_errors'是'On',實際上,我們希望看到錯誤。 – Ryan

+0

這是一個500內部服務器錯誤。我打開了錯誤報告,這就是我得到的:PHP致命錯誤:調用非對象的成員函數fetch()。 – will

回答

2

PDOStatement::execute()不返回結果;您在查詢上致電fetch

$stmt = $this->database->prepare(
     "SELECT * FROM news_posts"); 
$stmt->execute(); 
$array = $stmt->fetch(PDO::FETCH_ASSOC); 
print_r($array); 

你也可以縮短,爲query(),因爲你不加入任何參數:

$stmt = $this->database->query('SELECT * FROM news_posts'); 
$array = $stmt->fetch(PDO::FETCH_ASSOC); 
print_r($array); 
1

檢查在php.ini中是否打開PDO。 您也可以通過phpinfo()腳本檢查它。 請記住設置適當的錯誤級別:

error_reporting(1); ini_set('display_errors',1);