带有预处理语句的MySQL REGEX:"?"被误解了

时间:2014-04-06 17:49:37

标签: php mysql regex mysqli prepared-statement

我已就此问题咨询this question,但似乎无法看到答案。

我有一个准备好的声明,其中?占位符是我绑定的参数。问题是,MySQL似乎不喜欢这样,因为它位于REGEX块内,如下所示:

$sql = 'SELECT id FROM teams WHERE name REGEXP "^(?)"';
$stmt = $db->prepare($sql);
$stmt->bind_param('s', implode('|', $letters));

这引发:

"Got error 'repetition-operator operand invalid' from regexp"

有没有办法逃避?或其他什么?

[编辑]

根据以下评论,我试过:

$sql = 'SELECT id FROM teams WHERE name REGEXP "^(:letters)"';
$stmt = $db->prepare($sql);
$stmt->bind_param(':letters', implode('|', $letters));

现在我收到了错误

"Warning: mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables"

有趣的是,我注意到我使用的是bind_param(),而PHP docs say bindParam()。对我来说,后者是一种未定义的方法。

0 个答案:

没有答案