zend数据库错误输出

时间:2010-10-22 15:32:38

标签: zend-framework

我无法看到我的Sql错误。它会削减我的查询,除了通知存在错误之外,错误毫无意义。 喜欢 声明中的错误“select * from o ..”

如何获得完整查询,以便我可以调查错误是如何发生的?

我之前写了一个sql函数,如果sql有错误则抛出调试字符串。我虽然有需要,但应该存在代码:

if(($error = mysql_error($conn)){
  $cagiri=debug_backtrace();
  $i=count($cagiri);

并说

  [Caller__Function__] => dbSave
  [Caller__Class__] => classBasic
  [Arguments] => Array
  (
   [0] => function : loadLinks
   [1] => 
   [1] => sql error: Duplicate entry 'http://www.istanbulboncugu.com/Lokma' for key 'url'
   [2] => query: insert into downloadLinks set `title`= 'Lokma : İstanbul - Avrupa', `url`= 'http://www.istanbulboncugu.com/Lokma', `site`= 'rssSehirFirsati', `status`= 'new'  

所以我不挖掘30个查询,如果有错误, 错误字符串显示组成查询的函数。等等。 我认为Zend缺乏那种意识。 我知道zend不喜欢用硬盘和日志路径来对付聪明的方式吗?!?

2 个答案:

答案 0 :(得分:2)

如果出现错误,我会开始使用该代码。

function results($q){
  $results  = Array();
  try{
    $results =  $this->_db->query($q)->fetchAll();
  }catch(Exception $e){
    var_dump($q);
    die($e->getMessage());
  }
  return $results;
}

答案 1 :(得分:1)

如果您使用的是Zend_Db_Select,则可以通过

获取完整创建的查询
$select->__toString();

在回复您的评论时,您可以通过以下方式获取SQL错误消息:

try {
    $this->db->insert('Users', $array );
} catch (Exception $e){
    echo $e->getMessage();
}