2012-06-15 5 views
3

이 코드는 제대로 작동하지만 어떤 것이 잘못되면 exception을 처리하려고합니다. 따라서 의도적으로 query에서 구문 오류가 발생했지만 아무 일도 일어나지 않습니다. 다음은 명백한 구문 오류없이 코드어떻게하면 PDOException을 발생시킬 수 있습니까?

try { 
    $sql = "INSERT INTO journals (topic, author,) VALUES ('$topic', '$authors', ')"; 
    echo "1st"; 
    $lecturers_db->query($sql); 
    echo "second"; 
} catch(PDOException $e) { 
    echo $e->getMessage(); 
    echo $msg = "Error!"; 
} 

이다, 코드는 잘 작동하지만 구문 오류, 아무것도, 모든 try block가 실행의 코드와 catch block 실행하지의 코드를 발생하지 않습니다.

나는 어떤 도움을 주셔서 감사합니다. 여기서 exception을 제기하고 싶습니다.

답변

7

것은 바로 당신이 당신의 PDO 개체 초기화하기로 속성 PDO :: ATTR_ERRMODE에 PDO :: ERRMODE_EXCEPTION을 설정해야합니다 : 그 후

$lecturers_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

을, 어떤 쿼리가 예외를 발생합니다 실패

+1

+1 당신은 생성자에 대한 네 번째 인수로 이것을 전달할 수도 있습니다 : 배열 (PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION)'(가능한 다른 설정 옵션들과 함께). –

+0

와우, 고마워요, 이제 오류 메시지가 나옵니다. – Chibuzo

+1

@Chibuzo 도움이 된 것을 기쁘게 생각합니다. :) 이것이 유용했다면, 답변으로 표시하는 것을 잊지 마십시오. 건배! – marcelog

5

예외가 발생합니다. 코드의 구문 오류! = 예외. maual에서 그러나

<?php 
    try { 
     $code = 12; 
     throw new PDOException('Message', $code); 
    } catch (PDOException $e) { 

    } 
?> 

: 당신은 당신의 자신의 코드에서 PDOException을 던져 안

. PHP의 예외에 대한 자세한 내용은 예외 을 참조하십시오.

내 충고는 일반적인 예외를 throw하거나 나만의 예외를 작성하여 오류를 처리하는 것입니다.

+0

입력 해 주셔서 감사합니다. 귀하의 링크를 따르십시오. – Chibuzo

+0

OP 질문에 대한 오해. 그는 SQL 문에서 구문 오류에 대해 이야기하고있었습니다. 그걸 알아 내는데 두 번째 읽기가 필요했습니다. –

+0

@fireeyedboy 예 나는 marcelog의 대답을 읽은 후에 그것을 알아 차렸다. 그것을 지적 해 주셔서 감사합니다 –

관련 문제