有MySQL查询未知号码的格式如下参数(动态生成):PHP替换字符在循环中的字符串“一个接一个”
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中执行此操作。
P.S.除了顺序替换他们,我还需要参数添加到数组:
$parameters['user0'] = $user;
$parameters['user1'] = $user;
$parameters['user2'] = $user;
有没有用户确实一样?为什么那一切都是那样的?只需要一个占位符。 –
@YourCommonSense SQLSTATE [HY093]:无效的参数编号:绑定变量的数量与令牌数量不匹配# – Xeos
[使用for循环构建数据库查询]的可能重复(http://stackoverflow.com/questions/21368594/ building-db-query-with-a-for-loop) –