[英]How to use like clause in code iginiter query() WITH BIND PARAMS?
How to use like clause in code iginiter query() WITH BIND PARAMS? 如何在带有绑定参数的代码iginiter query()中使用like子句?
Eg: When I use 例如:当我使用
$query = 'SELECT mycol FROM mytable WHERE name LIKE %?';
$name = 'foo';
$db->this->query($query,array($name));
//the clause generated
//SELECT mycol FROM mytable WHERE id LIKE '%'foo'%'
//I expected this
//SELECT mycol FROM mytable WHERE id LIKE '%foo'
I don't to put param values inside query and use like below: $query = 'SELECT mycol FROM mytable WHERE name LIKE '%foo'; 我不将参数值放在查询中并按如下方式使用:$ query ='从mytable那里选择mycol名称,例如'%foo';
Also I can not use $this->db->like() function as my query consists of: INSERT IGNORE and INSERT INTO table SELECT col FROM table2; 我也不能使用$ this-> db-> like()函数,因为我的查询包括:INSERT IGNORE和INSERT INTO表SELECT col FROM table2;
Please suggests? 请提出建议? Thanks,
谢谢,
just use CodeIgniter Query Builder 只需使用CodeIgniter查询生成器
$name = 'foo';
$query = $this
->db
->select('mycol')
->like('name', $name)
->get('mytable');
$query = 'SELECT mycol FROM mytable WHERE name LIKE ?';
$name = '%foo';
$this->db->query($query,array($name));
codeigniter will replace ?
codeigniter会取代
?
with 'params'
value. 具有
'params'
值。 if you write this 如果你写这个
$query = 'SELECT mycol FROM mytable WHERE name LIKE %?';
$name = 'foo';
//$db->this->query($query,array($name)); //you wrote this line wrong.
//it should be like this
$this->db->query($query,array($name));
it will produce 它会产生
SELECT mycol FROM mytable WHERE name LIKE %'foo' //inverse comma after % ,actually before and after foo.
So your right way will be 所以你的正确方法是
$query = 'SELECT mycol FROM mytable WHERE name LIKE ?';
$name = '%foo';
$this->db->query($query,array($name));
It will produce 它将产生
SELECT mycol FROM mytable WHERE name LIKE '%foo'
NOTE 注意
You wrote this which is wrong 你写错了
$db->this->query($query,array($name));
Right way 正确的路
$this->db->query($query,array($name));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.