2011-08-24 26 views
1

這是我用我切換前的SQL查詢來笨我正在寫這個更新查詢嗎?

UPDATE transaction SET due_amount = to_pay-$payment_amount WHERE id = '$id' 

與在笨代碼笨

$this->db->set('due_amount', 'to_pay-'.$payment_amount, FALSE);     
$this->db->where('id', $id); 
$result = $this->db->update('transaction'); 

我寫這 - $> DB->設置是否正確?

問候

+0

有你測試? – hakre

+0

是的,我做了它的工作,但只是想檢查這是這樣做的正確方法 –

+0

爲什麼你繞過用'set'(第三個參數設置爲'FALSE')轉義? – hakre

回答

0

有多種變體可以使用updateDocs函數。你看起來並不特別壞(不過,我想不繞行,如果不是特殊原因逃逸),也許你更喜歡使用數組(或對象)提供的數據更新:

$data = array(
    'due_amount' => 'to_pay-'.$payment_amount, 
); 
$this->db->update('transaction', $data, sprintf('id = %d', $id)); 
+0

謝謝你能告訴我'交易'的用法嗎? –

+0

'transaction'是數據庫表的名稱。 – hakre

+0

opss抱歉。我的壞 –

1

你應該做的是這樣的:

$this->db->where('id', $id); 
$result = $this->db->update('transaction',array('due_amount'=>'to_pay-'.$payment_amount)); 

希望這有助於。

0

我覺得這裏可能有一些問題與$this->db->set 在codeignitor更新內容的標準方式是這樣的

$data = array(
      'title' => $title, 
      'name' => $name, 
      'date' => $date 
     ); 

$this->db->where('id', $id); 
$this->db->update('mytable', $data); 

產地: UPDATE MYTABLE SET標題= '{$標題}',名稱= '{$ name}',date ='{$ date}' WHERE id = $ id