2015-04-05 70 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