5

在我的 PHP 脚本中,我运行如下更新语句:

$this->_db->update('names', $data, $this->_db->quoteInto('id = ?', $obj->id));

db 句柄是一个 Zend_Db_Adapter_Abstract 实例(属于 PDO MySql 种类)。

问题是更新失败,我似乎无法获得有关该错误的更多信息。

错误发生在 try/catch 块中。当我发现错误时,我运行:

$db->getProfiler()->getLastQueryProfile();

输出是:

2012-11-14T22:20:02+11:00 INFO (6): Zend_Db_Profiler_Query Object
(
    [_query:protected] => begin
    [_queryType:protected] => 64
    [_startedMicrotime:protected] => 1352892002.6064
    [_endedMicrotime:protected] => 1352892002.6066
    [_boundParams:protected] => Array
        (
        )

我知道它说没有参数是绑定的,但我真的不认为是这样。我认为不知何故“最后一个查询”不是我想的那样。

其次,当我发现错误时,我也会运行:

$db->getConnection()->errorInfo();

输出是:

2012-11-14T22:20:02+11:00 INFO (6): Array
(
    [0] => 00000
    [1] => 
    [2] => 
)

显然这不是很有帮助。

有任何想法吗?如何获取有关错误的更多信息?

谢谢!

4

1 回答 1

1

您可以强制 PDO 抛出包含所有信息的异常:

<?php

$this->_db->->getConnection()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


try {
    $this->_db->update('names', $data, $this->_db->quoteInto('id = ?', $obj->id));
}
catch (Exception $ex) {
    print_r($ex);
}
于 2012-11-14T12:00:58.560 回答