【问题标题】:codeigniter 3.0 like query add ESCAPE '!' on likecodeigniter 3.0 like query add ESCAPE '!'喜欢
【发布时间】:2026-01-01 04:45:01
【问题描述】:

codeigniter 3.0 like query add ESCAPE '!'

示例:

 $this->db->select('*');
    $this->db->from('sample');
    $this->db->like('col','val%val2');
    $this->db->get()->result_array();

CI 产生如下查询

SELECT * FROM `sample` WHERE `col` LIKE '%val!%val2%' ESCAPE '!'

但我预料到了

SELECT * FROM `sample` WHERE `col` LIKE '%val%val2%' 

我怎样才能做到这一点?

【问题讨论】:

  • 我想要一个更有礼貌的问题而不是要求。
  • 你能否改进你的问题。它有点难以理解,或者你可能想要这个$this->db->like('col','val1%val2%val3','both',true);
  • 我编辑问题请检查..
  • @ShaifulIslam 请立即检查问题。
  • @ShaifulIslam 是的,我试过了,但同样的结果返回也不起作用

标签: codeigniter php-5.5 codeigniter-3


【解决方案1】:

搜索后我找到了答案,它将删除'!' ESCAPE 退出查询

$this->db->like('category_name', $string,'both',false);

【讨论】:

    【解决方案2】:

    在 CI-2 上它产生了预期的结果。但是 CI-3 产生了你所说的结果。可能应该改进。

    经过一番研究,我找到了需要在 system/database/DB_driver.php 中设置一些配置的解决方案

    打开DB_driver.php到340和347行。你会发现是这样的

    protected $_like_escape_str = " ESCAPE '%s' ";
    
    /**
     * ESCAPE character
     *
     * @var string
     */
    protected $_like_escape_chr = '!';
    

    如下所示将它们更改为空

    protected $_like_escape_str = "";
    
    /**
     * ESCAPE character
     *
     * @var string
     */
    protected $_like_escape_chr = '';
    

    【讨论】:

    • 它可以工作,但我无法更改我的系统文件夹文件。