从 PDO 准备语句访问原始 SQL:挑战
准备好的语句在数据库查询执行中具有显着的优势:效率和安全性。 然而,这种好处是有代价的:检查实际执行的 SQL 查询并不简单。
问题: PDO 不直接公开最终的参数化 SQL 查询字符串。这是准备好的语句工作方式所固有的:查询结构被发送到数据库,然后参数被单独传递。 因此,PDO 本身从不结合这些元素。
解决方法(带警告):
PDO::ATTR_EMULATE_PREPARES
设置为 true
强制 PDO 在发送 SQL 查询之前将参数直接嵌入到 SQL 查询中。 这违背了准备好的语句的目的,牺牲了它们的性能和安全优势。重要注意事项:
更多要点:
$queryString
对象的PDOStatement
属性保持不变。这解释了为什么检索 PDO 预准备语句执行的精确 SQL 很困难。 最佳实践是专注于强大的错误处理和日志记录,而不是尝试直接检查完全参数化的查询。
以上是如何从 PDO 准备语句中检索原始 SQL 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!