MySQLi получает ошибку запроса - PullRequest
4 голосов
/ 17 марта 2012

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

Я использую PHP 5.3.9 в версии сообщества Zend Server 5.6.0 и mysqli mysqlnd 5.0.8-dev - 20102224 - $ Редакция: 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, ...);
}
...

В целях тестирования я ввел город с именем 'bob' в свою базу данных и попытался вставить другой город с тем же именем, и это было напечатано:

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) ""
  ...
}

Здесь использование var_dump или доступ к ошибке или ошибке моего объекта mysqli, как я уже говорил, равен нулю. ОДНАКО print_r показывает ожидаемую ошибку! Что я здесь не так делаю? Я никогда раньше не использовал mysqli и перехожу с oci8, поэтому я надеюсь, что это всего лишь глупая ошибка.


Edit:

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

1 Ответ

0 голосов
/ 17 марта 2012

Можете ли вы поставить вывод этого:

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