尝试将更新数据转换为CI中的多个表

时间:2017-07-30 09:38:52

标签: php mysql codeigniter

我试图将更新数据放入多个具有某种连接关系的表中,这是我的表格。

表1:input_pen

no_form | no_lahan | t_utama

表2:lahan

no_lahan | JENIS

这是我的控制器名为 c_read

function upAksi(){
    $no_form = $this->input->post('noform');
    $no_lahan = $this->input->post('nolahan');
    $t_utama = $this->input->post('tutama');
    $jenis = $this->input->post('jlahan');

    $this->m_read->upAksi($no_form, $no_lahan, $t_utama, $jenis);
    redirect('c_read');
}

这是我的模型,名为 m_read

function upAksi($no_form, $no_lahan, $t_utama, $jenis){
    $this->db->set('input_pen.t_utama', $t_utama);
    $this->db->set('lahan.jenis', $jenis);

    $this->db->where('input_pen.no_form', $no_form);
    $this->db->where('input_pen.no_lahan', $no_lahan);
    $this->db->update('input_pen JOIN lahan ON input_pen.no_lahan= lahan.no_lahan');
}
我做错了吗?该代码发出了一些错误,如
enter image description here

我已经在phpmyadmin中检查了查询,并且运行良好

UPDATE input_pen JOIN lahan ON input_pen.no_lahan = lahan.no_lahan
SET input_pen.t_utama = 'PADI', lahan.jenis = 'Lahan Rawa'
WHERE input_pen.no_form = 42 AND input_pen.no_lahan = 71

2 个答案:

答案 0 :(得分:1)

Codeigniter活动记录不允许更新已连接的表。

尝试各种方法并搜索解决方案后。通过使用以下方法,您可以使用Codeigniter活动记录更新多个表。

示例代码:

$this->db->set('a.firstname', 'Pekka');
$this->db->set('a.lastname', 'Kuronen');
$this->db->set('b.companyname', 'Suomi Oy');
$this->db->set('b.companyaddress', 'Mannerheimtie 123, Helsinki Suomi');

$this->db->where('a.id', 1);
$this->db->where('a.id = b.id');
$this->db->update('table as a, table2 as b');

在看到您的最终评论后,我建议您单独进行。

您的更新查询

//First Table Update
$this->db->set('a.t_utama', $t_utama);
$this->db->where('a.no_form',  $no_form);
$this->db->where('a.no_lahan', $no_lahan);
$this->db->update('input_pen as a');
// Second Table Update
$this->db->set('b.jenis', $jenis);
$this->db->where('b.no_lahan', $no_lahan);
$this->db->update('lahan as b');

事件无法帮助您在$this->db->query( your query );中使用您的工作查询。

这就是我所能提出的建议。希望它会有所帮助。

答案 1 :(得分:0)

在update-method添加的生成的查询中似乎有额外的反引号。尝试删除额外的空间,看看它是否有帮助:

$this->db->update('input_pen JOIN lahan ON input_pen.no_lahan=lahan.no_lahan');