php - 如何选择要检查的 session 数组和数据库项

标签 php mysql arrays session

我有一个 session 数组,即$_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 ) )

如何在当前 session 中检查数据库中现有的数据条目,并在购物车中发生任何更改时更新特定 item_id 的数量。提前谢谢您

最佳答案

插入之前只是通过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                                                                
        }   
    }

希望可以帮到你!

关于php - 如何选择要检查的 session 数组和数据库项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29454943/

相关文章:

mysql - 多个模型访问同一个表

ruby - 用 `Array.new(n, Array.new)` 创建矩阵

java - 数组的 Java 函数参数是否总是按值传递?

arrays - 如何在 Swift 中将数组分成两半?

javascript - 嵌套在多个 DIV 和 PHP 代码中的 jQuery 选择器

php - 我怎样才能在php中创建一个接口(interface)来添加数据csv文件

php - 无法从基于 url CI 的站点中删除 index.php

php - 从数据库中获取两个图像路径并将它们循环显示在 slider 中

MySQL如何更改表中的列和行?

php - 如何在 MySQL 选择查询中编写正则表达式?