2017-02-07 9 views
-2

このエラーで私を助けてください:SQL構文のエラーを修正する方法

Notice: Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'c FROM oc_coupon c LEFT JOIN oc_cheaper_order_coupons coc using(coupon_id) WHER' at line 1 Error No: 1064 DELETE oc_coupon c FROM oc_coupon c LEFT JOIN oc_cheaper_order_coupons coc using(coupon_id) WHERE coc.order_id = '26' in /home/blablabl/public_html/shop/system/database/mysql.php on line 50

をコードは次のとおりです。

class ModelSaleCheaper extends Model { 
    public function deleteOrder($order_id) { 
     $this->db->query("DELETE " . DB_PREFIX . "coupon c FROM " . DB_PREFIX . "coupon c LEFT JOIN " . DB_PREFIX . "cheaper_order_coupons coc using(coupon_id) WHERE coc.order_id = '" . (int)$order_id . "'"); 
     $this->db->query("DELETE " . DB_PREFIX . "coupon_product cp FROM " . DB_PREFIX . "coupon_product cp LEFT JOIN " . DB_PREFIX . "cheaper_order_coupons coc using(coupon_id) WHERE coc.order_id = '" . (int)$order_id . "'"); 
     $this->db->query("DELETE FROM " . DB_PREFIX . "cheaper_order_coupons WHERE order_id = '" . (int)$order_id . "'"); 
     $this->db->query("DELETE FROM " . DB_PREFIX . "cheaper_order WHERE order_id = '" . (int)$order_id . "'"); 
+0

DELETEのOUTER JOINはちょっと奇妙だと思います。 – Strawberry

+0

また、最初の行は「クーポンcから削除する」となる可能性があります – Strawberry

+0

ありがとうストロベリー!私は何を置き換えるべきか分からないので、行全体を投稿してください。 – Julian

答えて

0

有効なクエリは次のようになります。

DELETE c -- assuming you only want to DELETE from coupon 
    FROM " . DB_PREFIX . "coupon c 
    JOIN " . DB_PREFIX . "cheaper_order_coupons coc USING(coupon_id) 
WHERE coc.order_id = $order_id; 

別の例...

DELETE cp 
    FROM oc_coupon_product cp 
    JOIN oc_cheaper_order_coupons coc USING(coupon_id) 
WHERE coc.order_id = 26 
+0

OPは明らかにマルチクエリを実行しようとしていますが、これはおそらくそれが失敗した理由です。 –

+0

@ Fred-ii-確かに、私は特定のエラーメッセージにのみ対処しています – Strawberry

+0

さて、OPはそこの私のコメントに応答していないので、本当に誰のボールゲームでもあります。彼らはあなたに例を掲示するよう依頼し、ここでもそれについて言わなかった。だから、これでうまくやりたい。 –