PDO에서 오류 메시지를 압축하는 방법은 무엇입니까?
PDO에서 오류 메시지를받을 수없는 것 같습니다.
#$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
try {
$sth = $dbh->prepare('@$%T$!!!');
print_r($sth);
print_r($dbh->errorInfo());
} catch (PDOException $e) {
echo $e->getMessage();
}
다음 만 제공합니다.
PDOStatement Object
(
[queryString] => @$%T$!!!
)
Array
(
[0] => 00000
[1] =>
[2] =>
)
setAttribute는 아무것도 도와주지 않습니다.
MySQL 용 PHP 5.3.3 Apache 2.0 핸들러 PDO 드라이버입니다.
클라이언트 API 버전 mysqlnd 5.0.7-dev-091210-$ Revision : 300533 $
오류 정보를 얻으려면 어떻게해야합니까?
setAttribute 는 쿼리 를 실행할 때 가장 최근에 발생한 오류 또는 예외를 발생 시킵니다 .
에뮬레이트 된 준비된 명령문의 경우 체크인이 없습니다 prepare()
.
에뮬레이트 된 준비된 명령문은 데이터베이스 서버와 통신하지 않으므로 PDO :: prepare ()는 명령문을 확인하지 않습니다.
그러나 execute()
쿼리가 서버로 전송 될 때 하나가있을 것 입니다.
그러나 mySQL 드라이버는 mySQL 4.1 이후로 기본 준비된 명령문을 지원하므로 적용되지 않아야합니다. 사용
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
사용하는 쿼리에 대해 예외 가 발생 해야합니다 .
나도 errorInfo()
데이터베이스 핸들 수준에서 정보를 얻으려고 시도 했지만 명령문 수준에서 정보를 얻었습니다.PDOStatement::errorInfo()
PHP 웹 사이트 당 :
PDO :: errorInfo ()는 데이터베이스 핸들에서 직접 수행 된 작업에 대한 오류 정보 만 검색합니다. PDO :: prepare () 또는 PDO :: query ()를 통해 PDOStatement 개체를 만들고 문 핸들에서 오류를 호출하면 PDO :: errorInfo ()는 문 핸들의 오류를 반영하지 않습니다. 특정 명령문 핸들에서 수행 된 조작에 대한 오류 정보를 리턴하려면 PDOStatement :: errorInfo ()를 호출해야합니다.
그러면 오류 코드와 해당 세부 메시지가 인쇄됩니다.
조언 : 이것은 단지 데모 일뿐입니다. 디버깅 목적으로 만 사용하십시오. 릴리스 버전에서 일반인에게 오류 메시지를 표시하도록 설정하지 마십시오.
try{
connection=$this->get_connection();//here i brought my connection string
connection->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
connection->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
/**
Do your works here..
//$statement=$connection->prepare($sql);
//if you are using errorInfo use after prepare statement before execute.here in this method i am not using it.
//print_r($statement->errorInfo());
**/
$statement->execute();
}
catch(PDOException $e) {
//this will echo error code with detail
//example: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'nasme' in 'field list'
echo $e->getMessage();
}
//$statement=null;
먼저 execute
쿼리를 실행 한 다음 오류를 확인해야합니다. 이렇게하려면 다음과 같이하십시오.
$sth->execute();
그런 다음 오류를 확인하십시오. 그러면 오류가 발생합니다.
참고 URL : https://stackoverflow.com/questions/3726505/how-to-squeeze-error-message-out-of-pdo
'IT박스' 카테고리의 다른 글
양식 인증 시간 초과와 세션 시간 초과 (0) | 2020.12.09 |
---|---|
자바 플러그인 프레임 워크 선택 (0) | 2020.12.09 |
Android 라이브러리 프로젝트에서 애플리케이션의 컨텍스트를 가져올 수 있습니까? (0) | 2020.12.09 |
배치 파일 : 상대 경로가있는 디렉토리의 모든 파일 나열 (0) | 2020.12.09 |
Django의 GenericForeignKey를 모델 목록으로 제한하려면 어떻게해야합니까? (0) | 2020.12.08 |