0

I've consulted this question for this problem, but couldn't seem to see the answer.

I have a prepared statement with a ? placeholder for a param I'm binding. Problem is, MySQL doesn't seem to like this because it's inside a REGEX block, like so:

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

This throws:

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

Is there a way of escaping the ? or something?

[EDIT]

Based on the comment below, I tried:

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

Now I get the error

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

Interestingly, I note I'm using bind_param() but the PHP docs say bindParam(). For me, the latter is an undefined method.

Community
  • 1
  • 1
Mitya
  • 33,629
  • 9
  • 60
  • 107

0 Answers0