我已就此问题咨询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()
。对我来说,后者是一种未定义的方法。