簡體   English   中英

插入新數據之前刪除表數據

[英]Deleting Table Data Before Inserting New Data

我有這兩個表,表A和表B。在更新表BI之前,要在插入新表之前刪除它的數據。

我有此查詢,它將刪除該表中的數據,並在成功刪除舊記錄后插入一個新數據。 它正在插入值,但並沒有刪除舊的值,因此最終復制了我之前已插入的一些新ID。 我嘗試使用以下代碼:

 public function editDiscount(){    
    foreach ($this->searchFields as $field => $value) :
        if($field == 'KEY'){
            $key = $value;
        } else if($field == 'NAME'){
            $discountName = $value;
        } else if($field == 'CODE'){ 
            $discountCode = $value;
        } else if($field == 'DESC'){
            $discountDesc = $value;
        }else if($field == 'TYPE'){
            $discountType = $value;
        }else if($field == 'TRANS'){
            $discountTransaction = $value;
        }else if($field == 'EXPTYPE'){
            $expiration = $value;
        }else if($field == 'START'){
            $expStartDate = $value;
        }else if($field == 'END'){
            $expEndDate = $value;
        }else if($field == 'VALUE'){
            $discountValue = $value;
        }else if($field == 'PRODKEY'){
            $productId= $value;
        } 
    endforeach;    

    $discount = VlDiscount::query()
            ->andWhere("autokey =?1")
            ->andWhere("app_id =?2")
            ->bind(array(1=>$key,2=>$this->session->get('appId')))
            ->execute();

    if($discount->count() != 0){

        $discountUpdate = VlDiscount::findFirst($key);
        $discountUpdate->discountName           = $discountName;
        $discountUpdate->discountCode           = $discountCode;
        $discountUpdate->discountDesc           = $discountDesc;
        $discountUpdate->discountType           = $discountType;
        $discountUpdate->discountTransaction    = $discountTransaction;
        $discountUpdate->expiration             = $expiration;
        $discountUpdate->expStartDate           = $expStartDate;
        $discountUpdate->expEndDate             = $expEndDate;
        $discountUpdate->discountValue          = $discountValue;



        if($discountUpdate->update() == false){
            $devMessage = array();
            foreach ($discountUpdate->getMessages() as $key){
                $devMessage[] =  $key->getMessage();
            }
            return $this->respond(array(
                    'userMessage' => 'Failed',
                    'devMessage' => $devMessage,
                    'more' => 'Failed to update. One or more fields failed on validation.'));
            }else if ($discountTransaction == 'p'){

                foreach ($this->searchFields as $field => $value) :
                if($field == 'PRODKEY'){
                    $productId = $value;
                }
                endforeach;

                $exs = explode('|',$productId);
                $deleteErrors = 0;
                foreach ($exs as $xx) {
                    $deleteproductDiscount = VlDiscountProduct::query()
                    ->andWhere("discountId =?1")
                    ->andWhere("app_id =?2")
                    ->bind(array(1=>(int)$xx,2=>$this->session->get('appId')))
                    ->execute();

                    foreach($productdiscountDelete as $cat){
                        $productsDelete = VlDiscountProduct::findFirst($cat->$discountUpdate->autokey);
                        if ($deleteproductDiscount != false) {
                            if ($productsDelete->delete() == false) {
                                $deleteErrors++;
                                $devMessage = array();
                                foreach ($deleteproductDiscount->getMessages() as $key){
                                    $devMessage[] =  $key->getMessage();
                                }
                            }
                        }
                    }
                    unset($deleteproductDiscount);
                }

                if($deleteError == 0){
                    $exp = explode('|',$productId);

                    foreach ($exp as $item){

                        $productDiscount = new VlDiscountProduct();
                        $productDiscount->discountId    = $discountUpdate->autokey;
                        $productDiscount->productId     = $item;
                        $productDiscount->app_id        = $this->session->get('appId');

                        if($productDiscount->create() == false){
                            $devMessage = array();
                            foreach ($productDiscount->getMessages() as $key){
                                $devMessage[] =  $key->getMessage();
                            }
                            return $this->respond(array(
                                    'userMessage' => 'Failed',
                                    'devMessage' => $devMessage,
                                    'more' => 'Failed to create. One or more fields failed on validation.'
                            ));
                        }

                    }
                    return $this->respond(array('userMessage' => 'OK'));
                }else{
                    return $this->respond(array(
                            'userMessage' => 'Failed',
                            'devMessage' => $devMessage,
                            'more' => 'Failed to delete. One or more fields produced an error.'
                    ));
                }
                return $this->respond(array(
                        'userMessage' => 'Failed',
                        'devMessage' => 'Cannot find user information',
                        'more' => 'Failed to update. One or more fields failed on validation.'));   
                }
            }
        }

您正在檢查if($deleteError == 0){而不是if($deleteErrors == 0){

UPDATE

整個foreach語句已關閉。

foreach($productdiscountDelete as $cat){
    $productsDelete = VlDiscountProduct::findFirst($cat->$discountUpdate->autokey);
        if ($deleteproductDiscount != false) {
            if ($productsDelete->delete() == false) {
                $deleteErrors++;
                $devMessage = array();
                foreach ($deleteproductDiscount->getMessages() as $key){
                    $devMessage[] =  $key->getMessage();
                }
            }
        }
}

您永遠不會定義$productdiscountDelete ,因此永遠不會進入此foreach循環。

我也改變

 $productsDelete = VlDiscountProduct::findFirst($cat->$discountUpdate->autokey);

$productsDelete = VlDiscountProduct::findFirst($cat->autokey);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM