codeigniter,选择两次或不

时间:2012-11-22 09:25:56

标签: php database codeigniter

我想知道我是否需要选择(where语句)两次,如果我想更新数据库中的特定用户。

实施例,

// Add new income for the day
function add_new_income($user_id, $budget_group_id, $day, $month, $year, $income)
{

    // Check if there has been posted anything at the same day
    $this->db->where('day',$this->current_date);
    $this->db->where('month',$this->current_month);
    $this->db->where('user_id',$user_id);
    $this->db->where('budget_group_id',$budget_group_id);

    $query = $this->db->get('budget_day',1);

    // Check if something was found
    if($query->num_rows() > 0)
    {
        // If something was found, update the value
        $data = array('income_total' => $income);
        $this->db->update('budget_day',$data);
    }

}

这会有用吗?或者我是否必须运行新的“db-> where”语句?

2 个答案:

答案 0 :(得分:1)

您需要在条件中写入两次,但您可以按如下方式在单行中进行尝试:

$this->db->where(array('day'=>$this->current_date, 'month'=>$this->current_month, 'user_id'=>$user_id, 'budget_group_id'=>$budget_group_id));

答案 1 :(得分:0)

您必须为where撰写新的update条件。更好的方法是将所有where条件存储在array中,并array用于selectupdate,如果必须的话。

$where = array(
    'day' => $this->current_date,
    'month' => $this->current_month,
    'user_id' => $user_id,
    'budget_group_id' => $budget_group_id
);
...
$this->db->where($where);

在您的情况下,似乎不需要两个quires,您只需要运行update查询。您可以使用$this->db->affected_rows()检查某些内容是否已更新。