【问题标题】:PHP PDO Prepared statement with REGEXP [duplicate]使用 REGEXP 准备的 PHP PDO 语句 [重复]
【发布时间】:2012-09-23 00:15:45
【问题描述】:

可能重复:
PHP Prepared Statements… Bind variable as numeric range in 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'

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

【问题讨论】:

    标签: php mysql regex pdo


    【解决方案1】:

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

    SELECT * FROM `mytable` WHERE col1 REGEXP CONCAT('This string ', :var)
    

    【讨论】:

    • 没错,但并不能解决问题。您不能将 PDO 占位符放在字符串中。请参阅我上面链接的问题中的答案。
    • @Barmar thx,进行了编辑,这样更好吗?
    猜你喜欢
    • 2014-04-19
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 2010-11-30
    相关资源
    最近更新 更多