2015-04-05 67 views
0

我有一個會話陣列即$ _ SESSION [「cart_array」]和數組包含如何選擇會話陣列和數據庫項目檢查

Array ([0] => Array ([item_id] => qwerty [quantity] => 1 [unit_price] => 500) [1] => Array ([item_id] => skjbm [quantity] => 2 [unit_price] => 100)) 

現在我用我的SQL查詢插入到這個數組DATABSE。 。我的查詢是

$insert_query = 'INSERT INTO product_added (id,order_id,email,item_id,unit_price,quantity,total,pay_status) values ';foreach($_SESSION['cart_array'] as $each_item){ 

$insert_query .= "('','$OrderId','','".$each_item['item_id']."','".$each_item['unit_price']."','".$each_item['quantity']."','".$each_item['unit_price']*$each_item['quantity']."',''),";}$query = rtrim($insert_query, ',');if(mysql_query($query)){echo 1;}else{ 
echo 0;} 

我的數據庫條目記錄是

item_id unit_price quantity 
qwerty  500  1 
skjbm  100  2 

至今其確定..... 現在用戶更新現有ITEM_ID和新陣列的生化的是

Array ([0] => Array ([item_id] => qwerty [quantity] => 5 [unit_price] => 500) [1] => Array ([item_id] => skjbm [quantity] => 6 [unit_price] => 100)) 

我怎麼能檢查數據的數據庫與當前會話中的現有條目和更新的特定ITEM_ID的數量,如果任何chagnges在cart.thank happend你提前

回答

1

插入之前只通過item id判斷具體數據是否存在。那麼表中不存在數據並插入,否則請更新操作。以下是我的短代碼供您參考。

<?php 

$cart_array = $_SESSION['cart_array'];; 
$item_ids = array(); 
if ($cart_array) { 
    foreach ($cart_array as $k => $v) { 
    $item_ids[$v['item_id']] = 1; 
    } 
} 

//before insert do a check 
$qry = sprintf("SELECT * FROM product_added WHERE id in (%s)",   implode(',', $item_ids)); 
$result = mysql_query($qry); 
$existing_item_ids = array(); 
while ($row = mysql_fetch_array($result)) { 
    $existing_item_ids[$row['item_id']] = 1; 
} 
$insrtion_arr = array(); 
$updated_arr = array(); 

if (!$existing_item_ids) { // if empty , the all cart data will insert into database 
    $insrtion_arr = $item_ids; 
    } else { 
    foreach ($item_ids as $v) { 
      if (isset($existing_item_ids[$v])) { 
       $updated_arr[$v] = 1; 
      } else { 
       $insrtion_arr[$v] = 1; 
     } 
    } 
    } 
//loop cart data and do database operation 
foreach ($cart_array as $k => $v) { 
     if (isset($insrtion_arr[$v['item_id']])) { 
      // do insert 
     } 
     if (isset($updated_arr[$v['item_id']])) { 
      // do update                 
     } 
    } 

希望這能幫助你!

+0

感謝寶貴的迴應,但現在它顯示錯誤 - :isset中的非法偏移類型或第46行中的空白,並且我的第46行是:if(isset($ insrtion_arr [$ v])),,, 2nd error非法偏移量在第50行輸入isset或空行,我的第50行是:if(isset($ updated_arr [$ v]))..請解決這個 – 2015-04-05 08:57:39

+0

抱歉有一個錯誤,你說,我重新編輯代碼,請嘗試再次。 @priyabratasen – Cherry 2015-04-05 09:43:27

+0

確實提示我錯在哪裏我的代碼是.....-> $ id = $ _SESSION ['cart_array']; $ ta = count($ id); for($ i = 0; $ i <$ $; $ i ++){ $ qry =(「SELECT * FROM product_added WHERE item_id ='」。$ id [$ i] ['item_id']。「'」); $ result = mysql_query($ qry); $ row = mysql_fetch_array($ result); $ qty = $ row ['quantity']; //原始數量編號 if($ qty!== $ id [$ i] ['quantity']){ \t \t $ sql_update =(「UPDATE product_added SET quantity ='」。$ id [$ i] ['數量']。「'WHERE item_id ='」。$ id [$ i] ['item_id']。「'」); \t \t echo「updated」; \t \t }; } – 2015-04-05 10:14:50