我有一个会话数组,即。$ _ 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查询将此数组插入数据库..我的查询是
$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数量
答案 0 :(得分:1)
在插入之前,只需通过项目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
}
}
希望这可以帮到你!