Zend framework 如何在Zend Framework中找到insert()的sql查询语句?

Zend framework 如何在Zend Framework中找到insert()的sql查询语句?,zend-framework,frameworks,tostring,Zend Framework,Frameworks,Tostring,如何在Zend Framework for insert()中找到sql查询语句,就像在db table select中一样$选择->\u toString()。您无法提取它,因为它是立即执行的,但是代码存在于Zend\u Db\u Adapter\u Abstract::insert()中,并且可能在某些适配器中被覆盖。试试这个对我有用的方法: $db = Zend_Db_Table_Abstract::getDefaultAdapter(); $db->getProfi

如何在Zend Framework for insert()中找到sql查询语句,就像在db table select中一样$选择->\u toString()。

您无法提取它,因为它是立即执行的,但是代码存在于
Zend\u Db\u Adapter\u Abstract::insert()
中,并且可能在某些适配器中被覆盖。

试试这个对我有用的方法:

    $db = Zend_Db_Table_Abstract::getDefaultAdapter();
    $db->getProfiler()->setEnabled(true);
    $profiler = $db->getProfiler();

    $lastID = ($this->insert($data));

    $query = $profiler->getLastQueryProfile();
    $params = $query->getQueryParams();
    $sqlQuery= $query->getQuery();

    foreach ($params as $par) {
        $sqlQuery = preg_replace('/\\?/', "'" . $par . "'", $sqlQuery, 1);
    }
    echo $sqlQuery;

但是我可以在核心类中的某个地方回显它吗?比如在任何抽象类中,我在insert()中的某些类中尝试过,但我只得到占位符,我只想看到原始查询…@Unni Krishnan:因为查询是通过一个准备好的语句执行的:db首先接收带有占位符的查询,以后再接收任何绑定。这样做更安全,副作用是您无法看到最终查询。要做到这一点,要么a)照你说的做,但要更换每一个?具有实际价值;或者b)读取数据库查询日志。