2013-02-19 110 views
0

我是codeigniter的新手。格式在codeigniter中写入查询

我有以下查询,每个查询具有不同的表名称和不同的条件。

我可以在单个查询中进行此查询还是执行查询的正确方法? 我必须执行所有这个查询。

$q = $this->db->where('id', $st)->update('st_info', array(
    'status' => 0, 
    'updated_time' => $this->info_model->getTime(), 
    'updated_ip' => $this->info_model->getIP() 
)); 

$q = $this->db->where('verid', $vid)->update('st_version', array(
    'status' => 0, 
    'updated_time' => $this->info_model->getTime(), 
    'updated_ip' => $this->info_model->getIP() 
)); 

$q = $this->db->where('id', $id)->update('st_raw', array(
    'status' => 0, 
    'updated_time' => $this->info_model->getTime(), 
    'updated_ip' => $this->info_model->getIP() 
)); 
+0

由于不同的条件和不同的表格你需要写差异 – 2013-02-19 07:08:09

回答

2

由于使用同一列所有的表,我喜欢用下面的方法来工作,

$data = array(
    'status' => 0, 
    'updated_time' => $this->info_model->getTime(), 
    'updated_ip' => $this->info_model->getIP() 
); 

    $q = $this->db->where('id', $st)->update('st_info', $data); 
    $q = $this->db->where('verid', $vid)->update('st_version', $data); 
    $q = $this->db->where('id', $id)->update('st_raw', $data); 
0

这是正确的,你不能将所有这些结合到一个查询中。

0

试试这个:

$data=array(
     'status' => 0, 
     'updated_time' => $this->info_model->getTime(),   
     'updated_ip' => $this->info_model->getIP()             
)); 

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

$this->db->where('verid',$vid); 
$this->db->update('st_version', $data); 

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

创建一个单一的功能

public function update($table,$where,$data) 
{ 
    $this->db->where($where); 
    $this->db->update($table,$data); 
} 

现在从控制器调用此功能,如

function update_call() 
{ 
    $data['status']   = 0; 
    $data['updated_time'] = $this->info_model->getTime(); 
    $data['updated_ip']  = $this->info_model->getIP(); 

    $where['id'] = $st; 
    $table   = 'st_info'; 

    $this->model_name->update($table,$where,$data); 

    unset($where); 
    unset($table); 

    $where['verid'] = $vid; 
    $table   = 'st_version'; 

    $this->model_name->update($table,$where,$data); 

    unset($where); 
    unset($table); 

    $where['id'] = $id; 
    $table   = 'st_raw'; 

    $this->model_name->update($table,$where,$data);  
}