关于为什么以下内容会抛出参数错误的任何想法。我已经看过所有其他答案,但我正在以与解决方案相同的方式处理这个问题,但这似乎仍然不起作用。将应用程序从adodb切换到pdo。MySql find_in_set()与PHP PDO不搭配很好
$possible_keys = implode(",", $possible_keys_array);
SQL片断
WHERE
FIND_IN_SET(table.key,:possible_keys)
$STH = $DBH->prepare($sql);
$STH->execute(array($possible_keys));
$STH->setFetchMode(PDO::FETCH_ASSOC);
我只把代码的快照。但是,如果使用possible_keys变量的实际文本替换:possible_keys占位符,它一切正常。我在挠挠我的脑袋,为什么这不起作用,因为无论如何变量只是一个字符串。它一直抛出以下错误:
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
p.s.我只包含了被证明是问题的子句,而不是整个查询。我知道其余的都很好。
伟大的我现在会尝试一下现在这一分钟。我错过了那一个。然而,它是如何为所有其他查询工作的。我在整个过程中都使用了指定的占位符,但是使用了具有相同顺序值的普通数组来将数据传递给stmt。它似乎在所有其他查询中工作正常,为什么会这样?我很感谢这些信息。 – jiraiya 2013-02-18 15:14:12
它确实已经修复它,谢谢100万。有趣的是,正如我上面所说,它适用于其余部分,但不适用于find_in_set(),我只能假设它在所有情况下都不能安全使用非关联数组,因此我将使它们全部关联。再次感谢。 – jiraiya 2013-02-18 15:16:35