簡體   English   中英

如何在帶有綁定參數的代碼iginiter query()中使用like子句?

[英]How to use like clause in code iginiter query() WITH BIND PARAMS?

如何在帶有綁定參數的代碼iginiter query()中使用like子句?

例如:當我使用

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

我不將參數值放在查詢中並按如下方式使用:$ query ='從mytable那里選擇mycol名稱,例如'%foo';

我也不能使用$ this-> db-> like()函數,因為我的查詢包括:INSERT IGNORE和INSERT INTO表SELECT col FROM table2;

請提出建議? 謝謝,

只需使用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會取代? 具有'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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM