gpt4 book ai didi

php - Doctrine - 如何打印出真正的 sql,而不仅仅是准备好的语句?

转载 作者:IT老高 更新时间:2023-10-28 11:43:33 33 4
gpt4 key购买 nike

我们正在使用 Doctrine,一个 PHP ORM。我正在创建这样的查询:

$q = Doctrine_Query::create()->select('id')->from('MyTable');

然后在函数中添加各种 where 子句和适当的东西,像这样

$q->where('normalisedname = ? OR name = ?', array($string, $originalString));

稍后,在 execute()-ing 查询对象之前,我想打印出原始 SQL 以检查它,然后执行以下操作:

$q->getSQLQuery();

但是,这只会打印出准备好的语句,而不是完整的查询。我想查看它发送到 MySQL 的内容,但它打印出一个准备好的语句,包括 ? 的。有什么方法可以查看“完整”查询吗?

最佳答案

Doctrine 并没有向数据库服务器发送“真正的 SQL 查询”:它实际上是在使用准备好的语句,这意味着:

  • 发送语句,准备它(这是 $query->getSql() 返回的内容)
  • 然后,发送参数(由$query->getParameters()返回)
  • 并执行准备好的语句

这意味着 PHP 端永远不会有“真正的”SQL 查询——因此,Doctrine 无法显示它。

关于php - Doctrine - 如何打印出真正的 sql,而不仅仅是准备好的语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2095394/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com