在我的PHP脚本中,我运行一个更新语句,如下所示:
$this->_db->update('names', $data, $this->_db->quoteInto('id = ?', $obj->id));
Run Code Online (Sandbox Code Playgroud)
db句柄是Zend_Db_Adapter_Abstract实例(PDO MySql种类).
问题是更新失败,我似乎无法获得有关错误的更多信息.
该错误发生在try/catch块中.当我发现错误时,我运行:
$db->getProfiler()->getLastQueryProfile();
Run Code Online (Sandbox Code Playgroud)
输出是:
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
(
)
Run Code Online (Sandbox Code Playgroud)
我知道它说没有参数绑定,但我真的不认为是这种情况.我认为不知怎的'最后一次查询'不是我认为的那样.
其次,当我发现错误时,我也会运行:
$db->getConnection()->errorInfo();
Run Code Online (Sandbox Code Playgroud)
输出是:
2012-11-14T22:20:02+11:00 INFO (6): Array
(
[0] => 00000
[1] =>
[2] =>
)
Run Code Online (Sandbox Code Playgroud)
显然这不是很有帮助.
有任何想法吗?如何获得有关错误的更多信息?
谢谢!
您可以强制 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);
}
Run Code Online (Sandbox Code Playgroud)