2017-05-29 59 views
2

我想從3個表中刪除數據,我有表user,pemohon,peserta其中所有表都使用外鍵互相連接。CodeIgniter - 從多個表中刪除數據

此查詢的工作,我已經試過在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 

,所以我轉換成笨這樣

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'); 
} 

但是這個代碼不工作,你可以解決我的代碼?由於

+1

好。你也可以使用'$ this-> db-> query(「把你的查詢放在你運行的mysql中)' – Nidhi

+0

@Nidhi我試過了,$ this-> db-> query(」DELETE user,pemohon ,peserta FROM用戶,pemohon,peserta WHERE user.id_user = pemohon.id_pemohon AND pemohon.id_pemohon = peserta.id_peserta AND pemohon.id_pemohon = $ id「);但不工作 – Pyon

+0

但你上面告訴'這個查詢工作'然後爲什麼它不工作? 。嘗試給予靜態ID'pemohon.id_pemohon = 1'並檢查'$ id'是否有價值? – Nidhi

回答

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"; 
} 
+0

正如我所看到的codeigniter文檔,這個查詢不能用查詢生成器執行,而你可以使用'$ this-> db-> query()'函數。 –

+0

對不起,我仍然是codeigniter'AND pemohon.id_pemohon =?' – Pyon

+0

新手在'$ this-> db-> query()'函數中填充第二個參數的問號,但它爲了防止sql注入而被轉義。 –

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)); 
} 
+0

如果我使用這段代碼,它只是從表'pemohon'中刪除數據,但不會在其他表中刪除 – Pyon