1

可能重复:
PHP 准备好的语句...将变量绑定为 REGEXP 中的数字范围?

$query = "SELECT * FROM `mytable` WHERE `file` REGEXP 'This string :var'";
$stmt = $dbh->prepare($query);
$stmt->bindValue(':var', 'exists');
$stmt->execute();

这会引发错误:

SQLSTATE[42000]:语法错误或访问冲突

当我在执行前回显 $query 时,我得到:

SELECT * FROM `mytable` WHERE `file` REGEXP 'This string :var'

你到底是如何在正则表达式中绑定变量的?

4

1 回答 1

2

两件事:您需要告诉 mysql 您希望应用REGEXP到哪个列,并且占位符只能用于可以出现值的位置(感谢@Barmar)。例如,如果你想搜索col1'This string :var'需要做

SELECT * FROM `mytable` WHERE col1 REGEXP CONCAT('This string ', :var)
于 2012-09-23T00:44:17.077 回答