[英]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.