在zend中,如何正确打印mysql查询?

时间:2011-07-15 20:15:04

标签: php mysql zend-framework

  

可能重复:
  How to print exact sql query in zend framework ?

在zend profiler中,我只能用问号标记(getQuery)打印查询或打印参数数组(getQueryParams)。

有没有办法替换所有问号标记,并打印真正的SQL查询?

谢谢!

3 个答案:

答案 0 :(得分:3)

这样的事情应该有效:

$profile = $this->getQueryProfile($queryId);
$query = $profile->getQuery();
$params = $profile->getQueryParams();

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

答案 1 :(得分:2)

框架使用预处理语句,所以实际上这是真正的查询 - 实际上它发送到数据库解析它然后将params绑定到它并执行。

答案 2 :(得分:2)

您可以使用__toString()方法。

$dbTable = new Application_Model_DbTable_TradeshowBooking();
$select = $dbTable->select();
$select->setIntegrityCheck(false);
$select->where('ends_on + INTERVAL 4 WEEK > ? ', $requestParams['ends_on']);        

Zend_Registry::get('logger')->log($select->__toString(), Zend_Log::INFO);