Php 在数据库中存储购物车的值

Php 在数据库中存储购物车的值,php,codeigniter-3,cart,Php,Codeigniter 3,Cart,我正在Codeigniter中开发一个电子商务项目。我希望任何用户都可以在购物车中添加产品,但当他想结账时,他必须登录网站,然后才能结账。但当我在用户登录后尝试此操作时,购物车数据丢失。如何在结账前存储数据,以便购物车中的数据不会丢失。为了解决这个问题,我尝试了另一种方法,将购物车数据存储在数据库中。为了将购物车数据存储到数据库,我使用了以下代码:- 控制器代码 class Shopping_Cart extends CI_Controller { public $cart_id = "";

我正在Codeigniter中开发一个电子商务项目。我希望任何用户都可以在购物车中添加产品,但当他想结账时,他必须登录网站,然后才能结账。但当我在用户登录后尝试此操作时,购物车数据丢失。如何在结账前存储数据,以便购物车中的数据不会丢失。为了解决这个问题,我尝试了另一种方法,将购物车数据存储在数据库中。为了将购物车数据存储到数据库,我使用了以下代码:- 控制器代码

class Shopping_Cart extends CI_Controller {
public $cart_id = "";
 function add_to_cart()
      {$data = array(
                        'id'    => $this->input->post('product_id'), 
                        'name'  => $this->input->post('product_name'), 
                        'price' => $this->input->post('product_price'), 
                        'qty'   => 1, 
                        "image" =>$this->input->post('product_image'), 
                      );
            $this->cart->insert($data);
       if($this->cart_id)
        {
            $this->updatecarttodb($this->cart->contents());                     
        }
        else
        {           
            $this->addcarttodb($this->cart->contents());
        }       

         echo $this->view_cart(); 
       }
private function addcarttodb($cartdata)
    {
        $cart_id = $this->Cart_model->addtoCart($cartdata);
        $cookie = array(
                            'name'   => 'cart_id',
                            'value'  => $cart_id,
                            'expire' => (365*60*60*24),
                            'domain' => '',
                            'path'   => '/',
                            'prefix' => '',
                            'secure' => FALSE
                        );
        $this->input->set_cookie($cookie);
    }
    private function updatecarttodb($cartdata)
    {
        $this->Cart_model->updateCart($this->cart_id,$cartdata);        
    }
模型代码

function addtoCart($cartData)
{
  $cartData = array("cart_data"=>serialize($cartData));
  $this->db->insert('tbltmpcart',$cartData);     
  return $this->db->insert_id();
}

function updateCart($cart_id,$cartData)
{
  if($cart_id == "")return;
  if($cartData != "")
   {
     $cartData = serialize($cartData);
   }
    $updateData = array("cart_data"=>$cartData);
    $this->db->where("cart_id",$cart_id);   
    $this->db->update('tbltmpcart',$updateData);           
}

function getCartContents($cart_id)
{
  $this->db->where("cart_id",$cart_id);
  $result = $this->db->get('tbltmpcart');
  if($result && $result->num_rows())
  {
    $retdata = $result->result_array();                
    if($retdata[0]['cart_data'] != "1" && $retdata[0]['cart_data'] != "")
    {
      return @unserialize($retdata[0]["cart_data"]);
    }     
  }
  return "";
}

我的问题是$cart\u id value not retain它丢失了,所以我无法进一步使用。如果代码中有任何问题,请尝试更正我的代码。

可能是您的用户登录脚本中有问题。检查登录脚本是否在用户登录之前或之后销毁会话。我已检查了登录脚本。登录正常。在我的网站上,任何用户都可以在购物车中添加产品,但如果用户未注册或注册用户未登录,则无法结账。对于签出,用户必须登录。我的问题在用户登录之前启动存储在购物车中的值在用户登录站点之后不保留在购物车中。