存在具有未知数量参数(动态构建)的MySQL查询,其格式如下:
SELECT * FROM actions WHERE user1 = ? AND user10 = ? AND user11 = ? AND time = :time
因为我使用的是PDO预处理语句,所以不能在一个查询中混合使用命名参数和位置参数,所以我需要用命名参数顺序替换所有问号。我有一个Array()
,它包含以下参数:
$parameters = Array();
$parameters['time'] = 1234567;
现在我需要用一个连续的命名参数来替换每个问号,这样查询将如下所示:
SELECT * FROM actions WHERE user1 = :user0 AND user10 = :user1 AND user11 = :user2 AND time = :time
$parameters
将包含其中的每个命名参数。我需要找到查询字符串中的每个“?“,并循环遍历这些示例,将它们替换为一个递增字符串。在JavaScript中,我将使用正则表达式找到?
,并将它们传递给一个函数,该函数将具有一个全局递增变量来跟踪当前的命名参数编号。但我不知道如何在PHP中实现这一点。
另外,除了按顺序替换它们之外,我还需要向数组添加参数:
$parameters['user0'] = $user;
$parameters['user1'] = $user;
$parameters['user2'] = $user;
3条答案
按热度按时间ctehm74n1#
你在做一件非常奇怪的事。
首先,没有一个单一的理由来合并不同的占位符,只是使它
然后执行。
但是如果你想要命名参数--在构建查询的同时添加它们。显然,
user1 = ? AND user10 = ? AND user11 = ?
是动态构建的。为什么你不同时添加命名占位符呢?顺便说一句,如果必须将同一个变量绑定到所有标记,那么只需使用单个命名占位符
然后关闭仿真模式,然后执行
4ktjp1zp2#
函数字符串替换($st_r,$rep,$strg){
}回声字符串替换(“m”,“0”,“malamm”);//0ala00
2hh7jdfx3#
我一直在寻找:
它将准确地返回所需的内容。