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
}
감사 회신 zjd을 위해. 예, 나는 그렇게하려고 시도했습니다. { $ sql-> execute ($ pdo_data); } catch (PDOException $ e) { $ error = $ e-> getMessage(); mail ("[email protected]", "데이터베이스 오류", $ error); } 하지만이 PHP 오류가 발생합니다 : CFatal error : 비 객체에서 execute() 멤버 함수를 호출하면 전체 스크립트가 중지됩니다. catch 블록에는 아무 것도 출력하지 않습니다. – Rob
'$ sql' 함수는'execute()'함수를 가지고 있지 않기 때문에 에러가 발생합니다. 스크립트에'$ sql = $ pdo-> prepare ($ query);를 아직 가지고 있습니까? 그렇다면'$ pdo'는 어디에서 초기화할까요? 또한 코드를 "'"기호로 묶을 수 있으며이 주석에 더 잘 표시됩니다. – zajd
나는했다. 내 setAttribute()에서 ERRMODE_EXCEPTION으로 ERRMODE_WARNING을 변경 했으므로 이제 작동합니다. 그것을 바꾼 후에, 그것은 속임수를했다. 도움에 다시 한번 감사드립니다. – Rob