我有一个带有绑定参数的PDOStatement:
$stmt = $co->prepare("SELECT * FROM Person WHERE age=:age");
$stmt->bindValue(':age','18',PDO::PARAM_STR);
现在我想获得执行的实际SQL查询:
SELECT * FROM Person WHERE age=18
我已经尝试了print_r($stmt);
,但它只打印出我在prepare()
方法中添加的相同文字,即18
未插入查询中。
我也尝试了这个解决方案$stmt->debugDumpParams();
,但是,它还没有给出给定参数的值。
在查询中自愿出错并打印错误消息是我最接近解决方案:
$stmt = $co->prepare("ELECT * FROM Person WHERE age=:age"); //I removed the 'S' of 'SELECT'
$stmt->bindValue(':age','18',PDO::PARAM_STR);
try {
$stmt->execute();
} catch (PDOException $e) {
echo $e->getMessage();
}
标准输出:
Error!: [...] near 'ELECT * FROM Person WHERE age=18' at line 1
但是这个方法的问题是它只打印查询的前80个字符。显然在我的查询中它运行良好,但我想使用更长的查询。
感谢您的帮助。