【问题标题】:Error of querying on CodeIgniter using REGEXP with [[:<:]] [[:>:]]使用带有 [[:<:]] [[:>:]] 的 REGEXP 在 CodeIgniter 上查询时出错
【发布时间】:2015-08-01 18:09:04
【问题描述】:

当我使用 REGEXP[[:&lt;:]]and[[:&gt;:]] 在 CodeIgniter 上查询数据时遇到问题。

系统不断在小于号的前后添加空格符。

例如:

$this->db->get_where('news', array("News_Tag REGEXP BINARY "=>"[[:<:]]data[[:>:]]"));

会变成:

SELECT * FROM `web_news` WHERE `News_Tag` REGEXP BINARY '[[: < :]]data[[:>:]]'

并导致错误。

我该如何解决这个问题?

【问题讨论】:

  • $this->db->query("SELECT * FROM web_news WHERE News_Tag REGEXP BINARY '[[: :]]' ");
  • 它工作,谢谢。但代码应该是:$this-&gt;db-&gt;query("SELECT * FROM web_news WHERE News_Tag REGEXP BINARY '[[:&lt;:]]data[[:&gt;:]]'");
  • 没关系还是你想要别的?
  • 有时第 3 方软件会伤害而不是帮助。也许它正在“保护”您免受与标签有关的事情。把它放在一个字符串中,然后删除多余的空格。

标签: php mysql regex codeigniter


【解决方案1】:

遇到了同样的问题,并通过从正则表达式定义中删除 CodeIgniter 的 Active Records 转义来解决它。

只需在 get_where 子句中添加 FALSE 作为第三个参数,并在表达式中添加单引号:

$this-&gt;db-&gt;get_where('news', array("News_Tag REGEXP BINARY "=&gt;"'[[:&lt;:]]data[[:&gt;:]]'"), FALSE);

【讨论】:

    【解决方案2】:

    感谢Danyal Sandeelo的回答,我找到了解决办法:

    $this->db->query("SELECT * FROM web_news WHERE News_Tag REGEXP BINARY
    '[[:<:]]data[[:>:]]'");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 2015-06-17
      • 2016-06-29
      • 2017-01-10
      • 2019-03-15
      • 2012-03-13
      • 1970-01-01
      相关资源
      最近更新 更多