获取具有绑定参数的PDO查询字符串而不执行它 [英] Getting a PDO query string with bound parameters without executing it
问题描述
是否可以从具有绑定参数的PDO对象获取查询字符串而无需先执行?我有类似于以下代码(其中$ dbc是PDO对象):
Is it possible to get a query string from a PDO object with bound parameters without executing it first? I have code similar to the following (where $dbc is the PDO object):
$query = 'SELECT * FROM users WHERE username = ?';
$result = $dbc->prepare($query);
$username = 'bob';
$result->bindParam(1, $username);
echo $result->queryString;
当前,这将回显一条SQL语句,例如:"SELECT * FROM users WHERE username =?".但是,我想包含绑定参数,以便它看起来像:'SELECT * FROM users WHERE username ='bob'.有没有一种方法可以执行而不执行它或通过某种方式用参数替换问号像preg_replace一样?
Currently, this will echo out a SQL statement like: "SELECT * FROM users WHERE username = ?". However, I would like to have the bound parameter included so that it looks like: 'SELECT * FROM users WHERE username = 'bob'". Is there a way to do that without executing it or replacing the question marks with the parameters through something like preg_replace?
推荐答案
简而言之:不.请参见从PDO准备好的语句中获取原始SQL查询字符串
In short: no. See Getting raw SQL query string from PDO prepared statements
如果只想模拟它,请尝试:
If you want to just emulate it, try:
echo preg_replace('?', $username, $result->queryString);
这篇关于获取具有绑定参数的PDO查询字符串而不执行它的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!