如何打印出真正的SQL,而不仅仅是准备好的声明?
我们正在使用一种PHP ORM Doctrine。 我正在创建一个像这样的查询:
$q = Doctrine_Query::create()->select('id')->from('MyTable');
然后在函数中添加各种where子句和适当的东西,就像这样
$q->where('normalisedname = ? OR name = ?', array($string, $originalString));
之后,在execute()
该查询对象之前,我想打印出原始SQL以检查它,并执行以下操作:
$q->getSQLQuery();
但是,只打印准备好的语句,而不是完整的查询。 我想看看它发送给MySQL的是什么,而是打印出一个准备好的声明,包括?
的。 有什么方法可以查看“完整”查询吗?
Doctrine不向数据库服务器发送“真正的SQL查询”:它实际上使用了准备语句,这意味着:
$query->getSql()
返回的内容) $query->getParameters()
) 这意味着在PHP方面从来没有“真正的”SQL查询 - 因此,Doctrine无法显示它。
一个例子..
$qb = $this->createQueryBuilder('a');
$query=$qb->getQuery();
显示SQL: $sql=$query->getSQL();
显示参数: $parameters=$query->getParameters();
如果您将所有查询记录在mysql中,您可以检查您的应用程序执行的查询:
http://dev.mysql.com/doc/refman/5.1/en/query-log.html
将会有更多的疑问,不仅仅是你正在寻找的疑问,而是你可以为之祈祷。
但通常->getSql();
作品
编辑:
查看我使用的所有mysql查询
sudo vim /etc/mysql/my.cnf
并添加这两行:
general_log = on
general_log_file = /tmp/mysql.log
并重新启动mysql
链接地址: http://www.djcxy.com/p/44873.html上一篇: How to print out the real sql, not just the prepared statement?