2010-10-22 50 views
0

我不能看到我的Sql错误。它削减了我的查询,错误是毫无意义的,除非它通知有错误。 Like 声明中的错误“select * from o ..”zend数据库错误输出

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

我以前写过一个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不喜欢艰难和对抗智能方式的日志路径?!?

回答

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

如果您正在使用Zend_Db_Select对象,你可以通过做

$select->__toString(); 

在回答您的意见得到充分创建的查询,这是你可以得到SQL的错误信息:

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

您还可以键入'echo $ select;' - 同样的事情。 – 2010-10-22 17:54:52

+1

老兄,我的意思是当有错误。当然,我可以打印我的sqls。 – nerkn 2010-10-23 11:31:52