【问题标题】:regex and variables in sql querysql查询中的正则表达式和变量
【发布时间】:2013-01-13 15:57:00
【问题描述】:

我正在尝试在段落中搜索一个单词:

WHERE paragraph LIKE '%$term%'

但是如果我搜索“in”为$term,我也会得到“反对”,“阅读”等,所以我想要空格之间的 $term。 % $term % 似乎不起作用,并且该术语可以在标点符号之前或之后。

我读到了 RLIKEREGEXP_LIKE,但是否可以在变量周围使用正则表达式?

【问题讨论】:

  • 您使用的是哪个数据库?
  • 我认为只需使用REGEXP 而不是LIKE(来源:dev.mysql.com/doc/refman/5.0/en/pattern-matching.html
  • 那行不通。问题是美元符号在正则表达式中有意义,所以我不确定如何包含变量
  • 这些变量从何而来?你是在 MySQL 命令行客户端,还是 PHP 脚本,还是别的什么?

标签: sql regex variables sql-like


【解决方案1】:

你应该使用mysqli prepared statements来避免SQL注入漏洞:

$stmt = $db->prepare("select * from table where paragraph regexp ?")
$stmt->bind_param('s', "[,. ]{$term}[,. ]")

【讨论】:

    猜你喜欢
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多