2009-03-27 4 views
3

오류가 발견되지 않았기 때문에 PDO를 사용하여 문제가 발생했습니다.문제 해결 PDO : 준비된 문 실행시 오류가 발생하지 않았습니다.

코드는 간단하고 잘 작동, 방금 혼동을 피하기 위해 샘플을 포함합니다 :

$sql = 'INSERT INTO somedatetable (something) 
     VALUES (:something) 
     ON DUPLICATE KEY UPDATE something=:something'; 

$values = array(":something" => $something); 

try { 
    $stmt = $dbh->prepare($sql);  
    $stmt->execute($values);  
} catch (PDOException $e) { 
    echo "Error: " . $e->getMessage() . "<br />\n"; 
} 

코드는 새 모듈에서 작업 할 때, 그러나, 나는이 문제에 부딪쳤다를 잘 작동하는 레코드가 추가되거나 수정되지 않았으며 오류가 발견되지 않았습니다.

$stmtfalse이 반환되었지만 이유를 찾지 못했거나 오류를 찾는 방법이 없습니다.

해결책은 간단 했으므로 테이블에 대한 쓰기 권한이없는 제한된 MySQL 사용자를 사용하고있었습니다. 이 오류는 mysql을 사용할 때마다 즉시 표시되지만, PDO를 사용하면 오류를 알 수 없습니다.

PHP/PDO를 표시하거나 이러한 종류의 데이터베이스 오류를 잡으려면 어떻게합니까?

답변

7

PDO::errorInfo() 또는 예외로

PDOStatement->errorInfo()"Errors and error handling" in PDO에 대한 문서를 확인하십시오. 예외는 기본적으로 발생하지 않으므로 예외를 사용 가능하게 설정할 수 있습니다.

도 참조 :

+1

덕분에, 내가 알 필요가 정확히 무엇을 알려줍니다 그. 한 가지 더 질문하지만 오류가 잡히지 않는 이유는 무엇입니까? – jeroen

+0

당신은 그것이 거짓으로 돌아 왔다고 말했어, 그것이 붙잡 혔음을 의미한다 ;-) –

+0

Ummmmmmmm, 메시지를 표시하지 않으면 catch 문이 생기는 지점은 무엇입니까? 나는이 모든 점을 (성공) else 조합을 제거하는 것이라고 생각했다 ... – jeroen