简体   繁体   English

如何在带有绑定参数的代码iginiter query()中使用like子句?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM