【问题标题】:zend database error outputzend 数据库错误输出
【发布时间】:2010-10-22 15:32:38
【问题描述】:

我看不到我的 Sql 错误。它削减了我的查询,并且该错误毫无意义,除非它通知存在错误。 喜欢 语句“select * from o..”中的错误

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

我之前写了一个 sql 函数,如果 sql 有错误,它会抛出调试字符串。我虽然zend'ers需要并且应该存在代码:

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 不喜欢硬和日志路径而不是智能方式?!?

【问题讨论】:

    标签: zend-framework


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果您使用 Zend_Db_Select,您可以通过以下方式获取完整创建的查询

      $select->__toString();
      

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

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

      【讨论】:

      • 你也可以输入echo $select;——同样的事情。
      • 老兄,我的意思是出现错误时。当然我可以打印我的 sqls。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多