2016-03-17 64 views
1

我試圖更新使用MySQL的記錄,如果條件時,該支持作爲記錄不會被更新如何使用mysql語法使用codeigniter表更新,如條件?

$this->db->update(
    'elections', 
     array(
      'status'=>'IF(status=="Active","Inactive","Active")' 
     ), 
     array(
      'election_id'=>$election_id 
     ) 
    ); 

我正在下面就打印查詢:

UPDATE `elections` SET `status` = 'IF(status==\"Active\",\"Inactive\",\"Active\")' WHERE `election_id` = '8' 

回答

0

使用單個等於(=)狀態後登錄:

$this->db->update(
    'elections', 
     array(
      "status"=>"IF(status='Active','Inactive','Active')" 
     ), 
     array(
      'election_id'=>$election_id 
     ) 
    ); 
2

看來笨逃脫你的IF語句,但你可以使用它作爲字符串:

$this->db->query('UPDATE `elections` SET `status`= IF(`position`=?,?,?) WHERE `election_id` = ?', array('Active','Inactive','Inactive', $election_id)); 

或者
您可以禁用自動避開功能(設置爲false set方法的第三個參數):

$this->db->set('status', "IF(status='Active','Inactive','Active')", false) 
->where(array('id' => $election_id)) 
->update('elections'); 

(請注意:在這種情況下,如果你的參數可以包含不可信的值,你應該逃避它們。例如:$ this-> db-> escape)

+0

我的問題是關於db-> update方法,有什麼方法可以使用update方法執行相同的查詢?編寫查詢是亂碼 – justnajm