내 DB2 클래스가 준비 기능이 경고 생성 : 일부 신비 쿼리의 PHP 오류 로그에서 경고를 일으키는캐치 db2_prepare는
public function prepare()
{
if (FALSE === ($this->stmt = db2_prepare($this->conn, $this->sql)))
{
throw new Exception($this->get_error());
}
return $this;
}
:
[26-Jan-2012 11:17:32] PHP Warning: db2_prepare(): Statement Prepare Failed in /<path to file>/Db2.php on line 178
db2_prepare가 FALSE 반환하지 않습니다. 그렇지 않으면 예외가 발생하고 백 트레이스가 발생합니다.
합법적 인 오류/경고를 캐치하기 위해 db2_prepare의 리턴 값을 적절하게 테스트하지 않거나 db2_prepare에 버그가 있습니까?
이것은 i5/iseries/as400의 Zend Server 스택에서 실행 중입니다.
이 상황의 해결 방법은 경고에 대한 예외를 생성하는 try catch 블록입니다. 그것이 어떻게 작동 될지 확신하지 못했고, 그것은 나에게 또 다른 포스트처럼 들린다.
또한 @는 옵션이 아닙니다. 그것은 이유에 대한 경고를 생성합니다. 나는 머리를 모래에 붙이지 않는 것을 선호한다.
업데이트 : 마지막으로 쿼리를 추적했습니다. 그것은 심하게 형성된 insert 문이었습니다. 준비가 실패하고 오류가 생성되었지만 유효한 명령문 자원이 리턴되었고 스크립트는 계속 예외를 생성합니다. exec를 사용하여 잘못된 INSERT가 포함 된 스크립트를 호출했지만 스크립트의 결과를 반환하지 않았으므로 오류가 발생하지 않았습니다.
여전히 나에게는 버그가있는 것처럼 보이지만 더 이상 추구 할 시간이 없습니다.
FALSE를 반환하지 않는다는 것을 말하고 있지만 반환되는 것은 무엇입니까? – netcoder
글쎄, 어떻게 찾아야할지 모르겠다. $ this-> stmt를 var_dump 할 수는 있지만 오류를 일으키는 스크립트는 많은 쿼리를 실행하며 경고를 생성하는 경로를 추적하는 방법을 모르겠습니다. 지금은 사용자 정의 오류 처리기를 사용하여 E_WARNING에 백 트레이스를 생성하는 방법을 파악하려고합니다. –
잘못된 쿼리를 찾았습니다. 유효한 명령문 리소스를 반환하고 있지만 준비가 실패합니다. –