2012-03-17 7 views
4

MySQLi를 사용하여 php applciation에서 sql 쿼리를 실행하면 오류가 항상 비어 있거나 null이되어 로깅이나 인쇄를 방해하여 오히려 실망 스럽습니다 ... 삽입, 업데이트하는 데 문제가 없습니다 또는 쿼리가 오류를 발생시킬 것으로 예상되지 않는 경우 아래 스 니펫을 사용하여 데이터를 삭제하십시오.MySQLi 쿼리 오류가 발생했습니다

나는 젠드 서버의 커뮤니티 버전에 PHP 5.3.9을 사용하고 5.6.0와 mysqli mysqlnd 5.0.8-dev에 - 20,102,224 - $ 개정 : 이것은 내 쿼리를 실행하는 코드는 318113 $

: 테스트 목적으로

... 
$this->last= $this->mysqli->query($sql); 
if (!$this->last) 
{ 
    print_r($this->mysqli); 

    var_dump($this->mysqli->error); 
    var_dump($this->mysqli->errno); 
    var_dump($this->mysqli); 
    $msg = 'Query failed [ ' . $this->mysqli->error . ' ]'; 

    $this->mysqli->rollback(); 
    throw new Exception($msg, ...); 
} 
... 

나는 내 데이터베이스에 '밥'라는 이름의 도시를 insterted과 같은 이름의 다른 도시를 삽입하는 노력이 인쇄 된 것입니다 :

mysqli Object 
(
    ... 
    [errno] => 1062 
    [error] => Duplicate entry 'bob' for key 'unq_city' 
    ... 
) 
string(0) "" 
int(0) 
object(mysqli)#6 (18) { 
    ... 
    ["errno"]=> 
    int(0) 
    ["error"]=> 
    string(0) "" 
    ... 
} 

H ere var_dump를 사용하거나 errno에 접근하거나 mysqli 객체의 에러는 이전에 언급했듯이 null이다. 그러나 print_r은 예상 된 오류를 보여줍니다! 내가 여기서 뭘 잘못하고 있니? 나는 전에 mysqli를 사용한 적이 없으며 oci8에서 마이그레이션을하고 있으므로 바보 같은 실수 만하기를 바랍니다.


편집 : 5.0.8-dev에 이전 서버, PHP 5.3.8, ZSCE 5.5.0 내 응용 프로그램을 테스트하고 mysqlnd

- $ 개정 - 20102224 : $ 동일로 310,735을 내가 말할 수있는 것에서 구성. 모든 덤프와 프린트는 빈 필드없이 mysqli 데이터 전체를 보여 주었다.

+1

당신이 그것을보고해야 버그가? : 넣을 수, 행운을 빌어 요! – ZiTAL

답변

0

당신은 이것의 출력은 내가 생각

$tmp = array(); 
foreach($this->mysqli as $key => $value) 
    $tmp[$key] = $value; 
print_r($tmp); 
+2

인쇄 된 mysqli 객체는 완전 비어 있지만 이전 서버에서는 제대로 작동하므로 ZSCE 나 PHP 중 하나에서 버그가 의심됩니다. – gxtaillon

관련 문제