根据文档,将第三个参数“none”传递给like方法应该可以消除在like搜索查询中使用通配符。
我正在这样做,其中
$search == 'test_username'
:
$this->db->like('username', $search, 'none');
$this->db->limit(1);
$q = $this->db->get('customers')->row();
var_dump($this->db->last_query());exit;
我希望看到这一点回响到屏幕上:
SELECT * FROM (`ci_customers`) WHERE `username` LIKE 'test_username' LIMIT 1
但我得到的是这个:
SELECT * FROM (`ci_customers`) WHERE `username` LIKE '%test_username%' LIMIT 1
该方法似乎忽略了第三个参数,或者我做错了什么。 有什么想法吗? 我可以写出我的查询并使用
query()
方法,但我很好奇。
我正在使用 CodeIgniter 2.1.0。
看起来好像“none”的代码没有包含在2.1.0版本中。查看第 649-692 行 https://github.com/EllisLab/CodeIgniter/blob/v2.1.0/system/database/DB_active_rec.php#L639。
然后看2.1.3版本的第664行:https://github.com/EllisLab/CodeIgniter/blob/2.1.3/system/database/DB_active_rec.php#L639
您需要升级,或将其添加到您的
DB_active_rec.php
文件中:
...
if ($side == 'none')
{
$like_statement = $prefix." $k $not LIKE '{$v}'";
}
...