2013-03-21 3 views
4

PHP로 MySQL에서 PDO로 전환합니다.이메일로 보낼 PHP PDO 오류 메시지

$query = "SELECT dogs FROM animals"; 
$res = mysql_query($query); 

if (!$res) { 
    $error = "Error Message: " . mysql_error(); 
    mail("[email protected]","Database Error",$error); 
} 

을 내가 될 것이라고에서 : 쿼리가 실행되고 어떤 이유로 실행되지 않은 과거에, 나는과 같이 본문에 mysql_error를() 메시지와 함께 자신에게 이메일을 보낼 수 있었다 웹 사이트의 데이터베이스에 문제가있을 때 에밀에 의해 경고되었습니다.

setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 

나는 자신을 PDO 연결에 시도 캐치가 있지만 준비하고 그들과 같이 일이 같은 실행을 위해 나는 오류 메시지를 좀하고 싶습니다 :

$query = "SELECT cats FROM animals"; 
$sql = $pdo->prepare($query); 

if (!$sql->execute()) { 
    $error = "Error Message: " . (pdo error message here); 
    mail("[email protected]","Database Error",$error); 
} 
다음과 같이

내 PDO 설정입니다

전자 메일 제목에 PDO 오류 메시지를 할당하는 방법에 대한 아이디어가 있습니까? 준비가 errorInfo()를 사용하지만 배열 (array)의 잘못된 매개 변수 개수와 같은 오류를 실행할 때 논리적 오류 메시지가 나타날 수 있습니다. 오류 메시지가 나타나지 않는 것 같습니다.

도움 주셔서 감사합니다./캐치

try { 
    $sql->execute(); 
} catch (PDOException $e) { 
    $e->getMessage(); // This function returns the error message 
} 

답변

6

사용 시도 당신은 사용할 수 있습니다

$query = "SELECT cats FROM animals"; 
$sql = $pdo->prepare($query); 

if (!$sql->execute()) { 
    $arr = $sql->errorInfo(); 
    $error = print_r($arr, true); 

    mail("[email protected]","Database Error",$error); 
} 
+0

감사 회신 zjd을 위해. 예, 나는 그렇게하려고 시도했습니다. { $ sql-> execute ($ pdo_data); } catch (PDOException $ e) { $ error = $ e-> getMessage(); mail ("[email protected]", "데이터베이스 오류", $ error); } 하지만이 PHP 오류가 발생합니다 : CFatal error : 비 객체에서 execute() 멤버 함수를 호출하면 전체 스크립트가 중지됩니다. catch 블록에는 아무 것도 출력하지 않습니다. – Rob

+0

'$ sql' 함수는'execute()'함수를 가지고 있지 않기 때문에 에러가 발생합니다. 스크립트에'$ sql = $ pdo-> prepare ($ query);를 아직 가지고 있습니까? 그렇다면'$ pdo'는 어디에서 초기화할까요? 또한 코드를 "'"기호로 묶을 수 있으며이 주석에 더 잘 표시됩니다. – zajd

+0

나는했다. 내 setAttribute()에서 ERRMODE_EXCEPTION으로 ERRMODE_WARNING을 변경 했으므로 이제 작동합니다. 그것을 바꾼 후에, 그것은 속임수를했다. 도움에 다시 한번 감사드립니다. – Rob

0

+0

재생 Carlos 주셔서 감사. 나는 그것을 시도 못했지만, 난 그냥이 얻을 : 배열 ( [0] => HY093 [1] => [2] => ) 문제가 무엇인지에 대한 실제적인 설명. – Rob

+0

부적절하게 바인드 된 변수가있을 것입니다. '$ query = "SELECT cats from FROM animals";'당신이 실행하려고하는 SQL입니까? 실제로 변수를 : variable로 묶는다면 bindParam과 bindValue에주의해야합니다. 이것은 약간 다릅니다. 시작하려면, bindValue를 사용한다. –

+0

나는 바인딩에 대해 잘 알고 있습니다. 나는 단지 메시지를 가로 질러 얻는 간단한 쿼리를 썼다. 고양이에 고양이가 없으면 오류가 나타나기를 원합니다. – Rob