gpt4 book ai didi

php - 在 SQL 查询中匹配绑定(bind)参数

转载 作者:行者123 更新时间:2023-12-02 05:19:08 24 4
gpt4 key购买 nike

我使用参数化查询,如下所示:

SELECT * FROM foo WHERE bar = :p0 AND baz = :p1

我的参数名称采用以下形式:

^:[a-z]\d+$

我目前正在扩展 PDOStatement 以提供一种转储完全构造的查询的方法,因为 PDOStatement::queryString 没有替换绑定(bind)参数值。

将查询中的这些参数与正则表达式匹配的最准确方法是什么?

一个不太准确的初始尝试:

$sql = "SELECT * FROM foo WHERE bar = 'bar:a0bar :u2 barbar :w4' AND baz = :q2 AND boz IN (:z6, :yy1, :q, :r22, :b7)";
$matches = array();
preg_match_all('/(:[a-z]\d+)\b/', $sql, $matches);
$params = $matches[1];

这失败了,因为字符串中的参数是匹配的,但我不确定避免这种情况是否可行。

请记住,我非常清楚没有任何方法是 100% 准确的,这只是为了将构造的查询转储到日志文件以帮助调试,因此生成的查询不会发送到用于执行的数据库。

最佳答案

当我使用 PDO 时,我传递一个绑定(bind)参数数组,然后我可以将 SQL 语句和数组一起记录下来。

如果您尝试将参数替换到 SQL 语句中,结果将不会考虑任何转义 PDO 将对您的参数执行。

关于php - 在 SQL 查询中匹配绑定(bind)参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8852082/

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