php - 添加新 session 产品 - PHP

标签 php mysql

当用户购买产品(假设他们有 3 种产品)并且输入了他们的信息时,该产品会自动进入数据库,状态为 0。

如果用户离开购物篮,让我们假设进入产品概览(并购买额外的产品,现在他们的购物篮中有 4 种产品)。

我必须找出如何将新产品添加到数据库中,而不是插入所有产品 + 新产品,因为已经插入了 3 个产品。

$_SESSION['inserted_ids'] = array();
        $id = '';   
        if( in_array( $id, $_SESSION['inserted_ids']) ){
             return;
        }else{

            $id = $db->Insert("INSERT INTO orders SET 
                       name    = '". $_SESSION['information']['name'] ."',
                       address = '". $_SESSION['information']['address'] ."',
                       date    = '". Database::Now() ."',
                       phone   = '". (isset($_SESSION['information']['phone']) ? $_SESSION['information']['phone']:'') ."',
                       email   = '".  $_SESSION['information']['email'] ."',
                       city    = '".  $_SESSION['information']['city'] ."',
                       zipcode = '".  $_SESSION['information']['zipcode']."'
            ");

            $_SESSION['inserted_ids'][] = (int) $id;


              # lists products
              $list = '';
              $grand_total = '';
              $res = $db->Execute("sql with product_id");
                while($row = $res->GetNext()){


                    if( $row['product_id'] == $_SESSION['inserted_ids'] ){
                         $db->Execute("INSERT INTO order_lines SET 

                                          price         = '$round_price', 
                                          order_id      =  $id,
                                          product_id    =  $product_id, 
                                          product_name  = '$product_name',
                                          units         = '$grand_units', 
                                          status        = '0',
                                          date          = '".Database::Now()."', 
                                          item_num      = '".$item_num."';

                                          ON DUPLICATE KEY UPDATE SET 
                                              units = '$grand_units' 

                                          WHERE order_id = $id
                                          LIMIT 1;
                                      ");
                    }


                  }
        }

最佳答案

你为什么不在你的产品数组中添加一个标志键来表示 是否插入了产品,然后在插入产品之前,检查标志。

如果您甚至不能这样做,则创建另一个 session 数组(称为 inserted_ids )来保存插入的产品 ID,并检查 product_idinserted_ids 数组中。

(你可以只使用 in_array,你不需要为此做一个全新的循环)。

这应该是您的代码:

$_SESSION[ 'inserted_ids' ] = array();//在其他一切之前执行这一行。

if( in_array( $id, $_SESSION[ 'inserted_ids' ] ) {
     return;
}
$id = $db->Insert("INSERT INTO orders SET 
               name    = '". $_SESSION['information']['name'] ."',
               address = '". $_SESSION['information']['address'] ."',
               date    = '". Database::Now() ."',
               phone   = '". (isset($_SESSION['information']['phone']) ? $_SESSION['information']['phone']:'') ."',
               email   = '".  $_SESSION['information']['email'] ."',
               city    = '".  $_SESSION['information']['city'] ."',
               zipcode = '".  $_SESSION['information']['zipcode']."'
   ");

$_SESSION['inserted_ids'][] = $id;

      $res = $db->Execute("sql statment");
while($row = $res->GetNext()){

 $db->Insert("INSERT INTO order_lines SET 

                          price         = '$round_price', 
                          order_id      = '".$id."',
                          product_id    = '$product_id', 
                          product_name  = '$product_name',
                          units         = '$grand_units', 
                          status        = '0',
                          date          = '".Database::Now()."', 
                          item_num      = '".$item_num."'
                ");
          }

关于php - 添加新 session 产品 - PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1854995/

相关文章:

php - 将 csv 内容导入到 mysql 数据库

php - 如何从mysql数据库回显最后插入的记录?

php - 来自 joomla 的 Mysql 查询需要很长时间

PHP MYSQL 使用 LIKE 搜索邮政编码

php - 从数据库通过 PHP 流式传输图像时获取 header

php - 相同字符串的不同 md5 哈希值,例如

mysql - mySQL 查询 INNER JOIN 之间的区别

java - 从servlet连接到mysql数据库

mysql - MySQL表中如何选择垂直数据

fwrite() 不允许,但 phpinfo() 说它应该是