2011-01-17 4 views
1

나는 내 mysql_query() 호출을 PDO로 변환하고 있지만, 을 얻는 방법을 이해하지 못하면 결과가 실패합니다.PDO 결과를 검색하는 방법 == false?

$STH = $DBH->query("SELECT * FROM articles ORDER BY category"); 
$STH->setFetchMode(PDO::FETCH_ASSOC); 
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); 

이 내가 할 노력하고있어하지만 작동하지 않습니다 :

try 
{ 
    $STH = $DBH->prepare("SELECT * FROM articles ORDER BY category"); //Notice the prepare 
    $STH->setFetchMode(PDO::FETCH_ASSOC); 
    //No need to silent as the errors are catched. 

    if($STH === false) //Notice the explicit check with !== 
    { 
     //Do not run a foreach as its not multi-dimensional array 
     $Error = $DBH->errorInfo(); 

     throw new Exception($Error[2]); //Driver Specific Error 
    } 
}catch(Exception $e) 
{ 
    //An error accured of some nature, use $e->getMessage(); 
} 
:
if($STH==false) { 
    foreach($dbh->errorInfo() as $error) { 
    echo $error.'<br />'; 
    } 
} 
+0

'false' 또는'true'로 특별히 작업 할 때는 항상 결과를 비교하기 위해'==='(= x3)을 사용해야합니다. – RobertPitt

+0

@zerkms, 나는 또한 자바 스크립트 팀이'=='이 할 것이라고 생각한다. – RobertPitt

답변

2

PDO에게 쿼리의 특성을 이용하여 보통과 같이 내려갑니다이 내 코드입니다

매우 신중하게 errorInfo을 읽고 예를 연구해야합니다.

+0

위의 코드를 이해할 수 없다. 오류는 어디에 인쇄됩니까? 그리고 무엇이 "새로운 Exception ($ Error [2]) 던짐;" 해야 할 것? 왜 열쇠 2? – bart

+0

키 2는 드라이버 관련 오류입니다. 오류 정보의 유효한 설명을 얻을 수있는 가장 좋은 기회입니다. 내가 게시 한 errorInfo 링크를 보면이 모든 것을 설명하고, 예외는 오류를 발생시키는 방법이며, try 블록 안에서는 화면에 오류를 표시하여 응용 프로그램에 영향을주지 않지만 catch 블록으로 전송되므로 오류를 기록하고 오류 페이지를 리디렉션/표시 할 수 있습니다. 자세한 내용은 예외 및 Try/Catch 블록을 참조하십시오. - 예외에 대해 읽으십시오 : http://php.net/manual/en/language.exceptions.php – RobertPitt

+0

Thx Robert Try/Catch는 저에게 새로운 것이고, 저는 그것에 대해 조사하고 있습니다. – bart

관련 문제