2015-02-11 113 views
0

如何在代码中使用like子句iginiter query()WITH BIND PARAMS?如何在代码中使用like子句iginiter query()WITH BIND PARAMS?

如: 当我使用

$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' 

我不把PARAM值内查询和使用如下: $查询=“SELECT mycol FROM mytable的WHERE名称LIKE '%富';

此外,作为我的查询包括我不能用$这个 - > DB->像()函数: INSERT忽略 和 INSERT INTO表的SELECT山坳FROM表2;

请指教? 谢谢,

回答

1
$query = 'SELECT mycol FROM mytable WHERE name LIKE ?'; 
$name = '%foo'; 
$this->db->query($query,array($name)); 
+0

这是正确的答案,但需要修复'$ DB->这 - > query'到'$这个 - > db-> query' – 2015-02-11 12:09:16

+0

谢谢,我刚刚从问题的作者复制它。现在它是正确的。 – pbogut 2015-02-11 13:23:10

1

笨将'params'值替换?。 如果你写这

$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)); 

会产生

SELECT mycol FROM mytable WHERE name LIKE %'foo' //inverse comma after % ,actually before and after foo. 

所以,你正确的方式将

$query = 'SELECT mycol FROM mytable WHERE name LIKE ?'; 
$name = '%foo';  
$this->db->query($query,array($name)); 

它会产生

SELECT mycol FROM mytable WHERE name LIKE '%foo' 


你写了这是错误的

$db->this->query($query,array($name)); 

正道

$this->db->query($query,array($name));