gpt4 book ai didi

php - 在 PHP 中实现一个简单的准备好的查询

转载 作者:可可西里 更新时间:2023-11-01 06:47:28 25 4
gpt4 key购买 nike

我正在尝试创建一个非常简单的数据库抽象,其中一部分使用准备好的查询。

现在,我有一个函数接受一个查询字符串和一个值数组,如下所示:

$query = "SELECT `first_name`, `last_name` FROM ::table_name WHERE `id` = :id"
$values = array(
'table_name' = $this->table_name,
'id' = $user_id,
);

这将创建如下查询:

SELECT `first_name`, `last_name` FROM `sometablename` WHERE `id` = '1234'

我的问题是:
我正在使用 preg_replace_callback 从查询字符串中获取::identifiers 和 :identifiers,然后将其发送到清理函数。问题是,我还需要发送 values 数组,以便函数可以从正则表达式中获取匹配项,使用该键获取 values 数组中的项目,转义该值,将其用正确的引号引起来,然后将其返回.

但我无法将任何额外信息传递给回调。我可以使用私有(private)静态变量,但这很hacky

另一种方法是什么?

最佳答案

手册中各种评论建议的备选方案之一是使用带有“e”修饰符的 preg_replace() 作为正则表达式的一部分:

preg_replace("/pattern/e","strtoupper('\\1')",$subject);

本质上,您是在指定要评估的代码。我想this comment有一个很好的例子,你可以创建函数,然后用一个小字符串来评估它,它允许你传递额外的参数:

preg_replace('/pattern/e',"your_function(\$array,\$foo,\$bar,\$etc)",$str);

关于php - 在 PHP 中实现一个简单的准备好的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2035313/

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