当前位置: 首页 > 面试题库 >

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

包德业
2023-03-14
问题内容

我们正在使用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的内容,但是它正在打印出一条准备好的语句,包括?。有什么办法可以查看“完整”查询吗?


问题答案:

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

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

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



 类似资料:
  • 问题内容: 去吧,Dijkstra:打印出路径,而不仅仅是计算最短的距离。 http://play.golang.org/p/A2jnzKcbWD 我使用Dijkstra算法能够找到最短的距离,也许不是。可以在这里找到代码。 但是,如果我无法打印出路径,那将毫无用处。随着大量指针的出现,我无法弄清楚如何打印出权重最少的最终路径。 简而言之,我不仅要找到最短的距离,还要在给定的代码上打印出最短的路径

  • 问题内容: 我有一个使用准备好的语句的Doctrine_RawSql查询。但是,当生成SQL查询时,它们似乎会被忽略。但是,如果我忽略了标记值,则会得到关于不匹配的绑定变量数量的异常(因此,至少是试图将它们包含在内)。 如果我内联包含这些值,Doctrine是否在幕后做任何事情以防止SQL注入? 这是我的代码: 这提供了以下SQL输出: 编辑:上的属性已正确设置。如果我对参数进行硬编码: 我遇到了

  • 假设上面的代码是我的查询。什么是一个安全的替代方案,将允许自动增加在mySQL数据库。

  • 我们有自己控制的内部平板电脑,我们要求它们记录的位置尽可能准确。我尽我所能打开真正的GNSS GPS,但总是返回。 我们使用的是三星Galaxy Tab A7,SM-T500,其规格保证它有一个真正的GPS GNSS无线电接收器。谷歌地图正确识别了我的秘密巢穴。 我们的Androidanifest.xml请求GPS权限: 在平板电脑的设置中,我们的应用程序具有“仅在应用程序使用时”的位置权限,这很

  • 问题内容: 准备好的语句如何帮助我们防止SQL注入攻击? 维基百科说: 准备好的语句可以抵御SQL注入,因为稍后需要使用其他协议传输的参数值不需要正确地转义。如果原始语句模板不是从外部输入派生的,则不会发生SQL注入。 我不太清楚原因。用简单的英语和一些例子,简单的解释是什么? 问题答案: 这个想法很简单-查询和数据被发送到数据库服务器 分开 。 就这样。 SQL注入问题的根源在于 代码和数据 的

  • 问题内容: 我正在使用nodejs npm软件包, 我目前有一系列产品skus,例如.. 我的sql存储在文件中,如下所示… 然后,我还准备了如下语句: 正确地包含在对象中,因为当我简单地使用它时,该语句可以正常工作,我只是在努力如何传递数组以使它们在准备好的语句中工作。 我使用和修改字符串,以逗号分隔等,但我无法使这些方法正常工作。 我以为我需要param字符串才能如下所示。 如果有人可以阐明如