3

当我使用 MySQLi 在我的 php 应用程序上执行 sql 查询时,错误始终为空或 null,因此使我无法记录或打印它们,这相当令人沮丧......我没有遇到任何问题插入、更新或删除数据时使用下面的代码片段该查询预计不会引发错误。

我在 Zend Server 5.6.0 和 mysqli mysqlnd 5.0.8-dev - 20102224 - $Revision: 318113 $ 的社区版上使用 PHP 5.3.9

这是执行我的查询的代码:

...
$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 对象的 errno 或错误是 null。但是 print_r 显示了预期的错误!我在这里做错了什么?我以前从未使用过 mysqli 并且正在从 oci8 迁移,所以我希望这只是一些愚蠢的错误。

我在较旧的服务器 PHP 5.3.8、ZSCE 5.5.0 和 mysqlnd 5.0.8-dev - 20102224 - $Revision: 310735 $ 上测试了我的应用程序,据我所知配置相同。所有转储和打印都显示了整个 mysqli 数据,没有任何空字段!

4

0 回答 0