2016-09-20 56 views
0

我是代碼igniter中的新功能。我試圖執行delete查詢使用連接多個表,但我收到查詢錯誤。左連接不適用於codeigniter

這是我的查詢代碼。

$this->db->from('order'); 
$this->db->join('item_order', 'item_order.order_id = order.order_id','left'); 
$this->db->join('product', 'product.product_number = item_order.item_number','left'); 
$this->db->join('product_to_image', 'product_to_image.p_id = product.products_id','left'); 
$this->db->join('product_to_dropbox', 'product_to_dropbox.products_id = product.products_id','left'); 

$this->db->where('order.user_name', $ebay_user_name); 
$this->db->where('order.user_id', $user_id); 

$this->db->delete('order'); 
+0

是故意「命令」還是隻是一個錯字? – Nebi

+0

你得到的錯誤是什麼?是否有關於非唯一標識符的機會? – PaulD

+0

我只收到訂單表刪除。 –

回答

0

當使用笨你不能用Join執行DELETEsee herehere

你需要編寫一個自然的SQL。見鏈接1:

$sql = "DELETE o FROM order as o 
    LEFT JOIN item_order ON item_order.order_id = order.order_id 
    LEFT JOIN product ON product.product_number = item_order.item_number 
    LEFT JOIN product_to_image ON product_to_image.p_id = product.products_id 
    LEFT JOIN product_to_dropbox ON product_to_dropbox.products_id = product.products_id 

    WHERE order.user_name = ? and order.user_id = ?"; 
$this->db->query($sql, array($ebay_user_name, $user_id)); 

或嘗試反引號`。但我不確定是否逃脫它們:

$sql = "DELETE o FROM `order` as o 
    LEFT JOIN `item_order` ON item_order.order_id = order.order_id 
    LEFT JOIN `product` ON product.product_number = item_order.item_number 
    LEFT JOIN `product_to_image` ON product_to_image.p_id = product.products_id 
    LEFT JOIN `product_to_dropbox` ON product_to_dropbox.products_id = product.products_id 
WHERE order.user_name = ? and order.user_id = ?"; 
$this->db->query($sql, array($ebay_user_name, $user_id)); 
+0

我在上面的查詢中收到此錯誤 - > 發生數據庫錯誤 錯誤號:1064 您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「爲了FROM'order' LEFT JOIN item_order ON item_order.order_id = order.ord」在行1 行號:695 –

+0

根據到http://dev.mysql.com/doc/refman/5.7/en/delete.html'Delete'語法是正確的。但也許它需要一個別名...您使用哪個MySQl版本? – Nebi

相關問題