2012-12-26 3 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);