【问题标题】:How do I use PHP string interpolation and square brackets in a MySQL regexp?如何在 MySQL 正则表达式中使用 PHP 字符串插值和方括号?
【发布时间】:2016-12-09 19:57:09
【问题描述】:

在我的查询中,我有:

$search .= "and title REGEXP '[[:<:]]$q[[:>:]]' ";

这会在 Apache 错误日志中产生以下错误:

PHP Parse error:  syntax error, unexpected '[', expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)

我尝试在它周围加上 {},但这也没有用。

谢谢。

【问题讨论】:

  • 用反斜杠转义美元符号。 PHP 试图将其解释为一个变量。或者更好的是,使用准备好的语句,您不必担心这些事情。
  • 准备好的语句在这里是必不可少的。这是在要求严重的问题。
  • @tadman,严重问题是什么意思?
  • 我在实际查询之前使用此代码解决了这个问题: $regexpVariable = "[[:<:>:]]";
  • @NestMan 看看如果你犯了这么大的错误,tool like this 可以对你的网站做些什么。这不是一个很好的清单。

标签: php mysql regex


【解决方案1】:

添加大括号:$search .= "and title REGEXP '[[:&lt;:]]{$q}[[:&gt;:]]'"; -- 否则它认为您正在引用 $q 数组。

PHP 允许在字符串中查找数组,例如 "... $q[...] ..." 它还允许表达式:"... {$a+$b} ..." if 您添加大括号。将它们放在一起解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多