MySQLi获取查询错误
当我使用MySQLi对我的php应用程序执行sql查询时,错误总是为空或为空,因此禁止我从日志记录或打印它们,这是相当令人沮丧的...我没有遇到任何插入,更新或者在查询不会引发错误时使用下面的代码段删除数据。MySQLi获取查询错误
我使用PHP 5.3.9在Zend服务器社区版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, ...);
}
...
出于测试目的,我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或访问我的mysqli对象的errno或错误是null。但是print_r显示了预期的错误!我在这里做错了什么?我之前从未使用mysqli,并且正在从oci8迁移,所以我希望这只是一个愚蠢的错误。
编辑:
我测试的旧服务器,PHP 5.3.8,5.5.0 ZSCE我的应用程序和mysqlnd 5.0.8-dev的 - 20102224 - $修订:310735 $具有相同从我可以告诉的配置。所有转储和打印都显示了整个mysqli数据,没有任何空白字段!
你可以把这个输出?:
$tmp = array();
foreach($this->mysqli as $key => $value)
$tmp[$key] = $value;
print_r($tmp);
打印的mysqli对象完全是空的,但在旧的服务器上它正常工作,所以我开始怀疑ZSCE或PHP上的错误。 – gxtaillon 2012-03-17 17:22:57
,我认为是你必须报告一个bug,祝你好运! – ZiTAL 2012-03-17 17:20:52