2015-08-28 56 views
0

我想通過設置添加int值到我的mysql數據。
這是我的想法,但它不工作:代碼點火器與MySQL:通過集增加值?

$query = $this->db->select('*')->from('usr_table')->where('user_id', $id)->get(); 
$var = 50; 

foreach ($query->result() as $row) { 
     $this->db->set('counted', ($row->counted) + $var); 
     $this->db->where('user_id', $id); 
     $this->db->update('usr_table'); 
} 

喜歡的東西:

counted = counted + var 

希望你能幫助我。
謝謝

+0

從未使用過CI,但在0使計數器變量(或者開始你想要的值),然後在循環加一。 – Script47

+0

是來自'db'對象還是來自'set'返回對象的'where'方法? –

回答

1

爲什麼你不這樣做?

$this->db->set('counted', 'counted + 50', FALSE)->where('user_id', $id)->update('usr_table'); 
+0

最後退出簡單;-)
但是如果'var'應該是另一個字段乘以一個數字呢? – fips123

+0

這是一樣的。在SQL中,根據您對$ this-> db-> where('user_id',$ row [「user_id」])的要求,您總是會更新table_name SET field_1 = field_2 * [您的var此處] –

0

使用GROUP_BY

$query = $this->db->select('COUNT(user_id) AS total')->from('usr_table')->where('user_id', $id)->group_by('user_id')->result_array(); 
$var = 50; 

foreach ($query as $row) { 
$this->db->set('counted', ($row["total"]) + $var); 
$this->db->where('user_id', $row["user_id"]); 
$this->db->update('usr_table'); 
} 
+0

更新代碼。 「使用$ id或$ row [「user_id」]。 $ row [「user_id」]將更新表中的所有用戶。 – Farhan