CodeIgniter - 从多个表

时间:2017-05-29 06:35:45

标签: php mysql codeigniter

我想从3个表中删除数据,我有表userpemohonpeserta,其中所有表都使用外键相互连接。

这个查询工作,我已经尝试过mysql

DELETE user,pemohon,peserta
FROM user,pemohon,peserta
WHERE user.id_user=pemohon.id_pemohon AND
pemohon.id_pemohon=peserta.id_peserta AND pemohon.id_pemohon=1

所以我像这样转换为CodeIgniter

function delete_data($id)
{
    $this->db->where('pemohon.id_pemohon=user.id_user');
    $this->db->where('pemohon.id_pemohon=peserta.id_peserta');
    $this->db->where('pemohon.id_pemohon',$id);
    $this->db->delete('pemohon','user','peserta');
}

但是这段代码不起作用,你可以修复我的代码吗?感谢

3 个答案:

答案 0 :(得分:2)

在删除功能中,您必须提供表格数组:

function delete_data($id)
{
    $this->db->where('pemohon.id_pemohon=user.id_user');
    $this->db->where('pemohon.id_pemohon=peserta.id_peserta');
    $this->db->where('pemohon.id_pemohon',$id);
    $this->db->delete(array('pemohon','user','peserta'));
}

如果不起作用,请执行查询功能($ id转义):

function delete_data($id)
{
    $sql = "DELETE user,pemohon,peserta 
        FROM user,pemohon,peserta 
        WHERE user.id_user=pemohon.id_pemohon 
        AND pemohon.id_pemohon=peserta.id_peserta 
        AND pemohon.id_pemohon= ?";

    $this->db->query($sql, array($id));
}

没有逃避$ id:

function delete_data($id)
{
    $this->db->query("DELETE user,pemohon,peserta 
        FROM user,pemohon,peserta 
        WHERE user.id_user=pemohon.id_pemohon 
        AND pemohon.id_pemohon=peserta.id_peserta 
        AND pemohon.id_pemohon= $id";
}

答案 1 :(得分:1)

你可以尝试这个过程

function delete_data($id)
{
   $this->db->delete('user', array('id_user' => $id)); 
   $this->db->delete('pemohon', array('id_pemohon' => $id));
   $this->db->delete('peserta', array('id_peserta' => $id));
}

答案 2 :(得分:0)

您可以将表名保存在数组中,然后将该数组作为参数传递给delete()。您可以阅读完整的示例:https://tutorialpace.com/CodeIgniter-Tutorials/CodeIgniter-Database-Delete