2012-03-17 4 views
4

Когда я выполняю sql-запросы в моем php-приложении с использованием MySQLi, ошибки всегда пусты или нуль, поэтому отключение от регистрации или печати их довольно сложно ... У меня не было никаких проблем с вставкой, обновлением или удаление данных с помощью нижеприведенного фрагмента, когда запрос не должен приводить к ошибке.MySQLi получает ошибку запроса

Я использую PHP 5.3.9 на общинном издание Zend Server 5.6.0 и MySQLi mysqlnd 5.0.8-DEV - 20102224 - $ Revision: 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 если использовать var_dump или получить доступ к errno или ошибке моего объекта mysqli, как я уже говорил, null. HOWEVER print_r показывает ожидаемую ошибку! Что я здесь делаю неправильно? Я никогда не использовал mysqli раньше и перехожу с oci8, поэтому я надеюсь, что это всего лишь глупая ошибка.


Edit:

Я проверил мое приложение на старом сервере, PHP 5.3.8, 5.5.0 и ZSCE mysqlnd 5.0.8-DEV - 20102224 - $ Revision: 310735 $ с идентичными конфигурацию из того, что я могу сказать. Все дампы и отпечатки отображали все данные mysqli без какого-либо пустого поля!

+1

я думаю, что это ошибка, которую необходимо сообщить об этом, удачи! – ZiTAL

ответ

0

Вы можете поставить выход этого ?:

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

Печатный объект mysqli полностью пуст, но на более старшем сервере он работает правильно, поэтому я начинаю подозревать ошибку на ZSCE или PHP. – gxtaillon

Смежные вопросы