我们正在使用 Doctrine,一个 PHP ORM。我正在创建这样的查询:
$q = Doctrine_Query::create()->select('id')->from('MyTable');
然后在函数中添加各种 where 子句和适当的东西,像这样
$q->where('normalisedname = ? OR name = ?', array($string, $originalString));
稍后,在 execute()
查询对象之前,我想打印出原始 SQL 以检查它,然后执行以下操作:
$q->getSQLQuery();
但是,这只会打印出准备好的语句,而不是完整的查询。我想看看它发送到 MySQL 的内容,但它打印出一个准备好的语句,包括 ?
的。有什么方法可以查看“完整”查询吗?
原文由 Amandasaurus 发布,翻译遵循 CC BY-SA 4.0 许可协议
Doctrine 没有向数据库服务器发送“真正的 SQL 查询”:它实际上是使用准备好的语句,这意味着:
$query->getSql()
返回的内容)$query->getParameters()
返回)这意味着 PHP 端永远不会有“真正的”SQL 查询——因此,Doctrine 无法显示它。