PDO實現購物車類

發現pdo忘記的差很少了,sql也不會寫了 想着寫點什麼東西 簡單的寫個購物車類php

<?php
session_start();
class Cart
{
    public $pdo = null;

    public function __construct($config)
    {
        $host = $config['host'];
        $user = $config['user'];
        $db = $config['db'];
        $pwd = $config['pwd'];
        if (empty($_SESSION['user_id'])) {
            return show(0, '請先登陸');
        }
        try {
            $this->pdo = new PDO("mysql:host=$host;dbname=$db", "$user", "$pwd", array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
            $this->pdo->query("set names utf8");
        } catch (PDOException $e) {
            echo $e->getMessage();
        }
    }

    //添加商品到購物車
    public function add_cart($productid, $num)
    {
        $sql = "select price from shop_product where id=?";
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute(array($productid));
        $data = $stmt->fetch(PDO::FETCH_ASSOC);
        $price = $data['price'];
        $createtime = time();
        $sql = "select * from shop_cart where productid=? and userid=?";
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute(array($productid, $_SESSION['user_id']));
        $data = $stmt->fetch(PDO::FETCH_ASSOC);
        if ($data) {
            $sql = "update shop_cart set num=num+? where userid=? and productid=?";
            $params = array($num, $_SESSION['user_id'], $productid);
        } else {
            $sql = "insert into shop_cart(productid,num,userid,price,createtime) values(?,?,?,?,?)";
            $params = array($productid, $num, $_SESSION['user_id'], $price, $createtime);
        }
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute($params);
        $rows = $stmt->rowCount();
        return $rows ?
            show(1, 'ok', $rows) :
            show(0, 'fail');
    }

    //修改購買數量
    public function change_num($productid, $num)
    {
        $sql = "update shop_cart set num=? where userid=? and productid=?";
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute(array($num, $_SESSION['user_id'], $productid));
        $rows = $stmt->rowCount();
        return $rows ?
            show(1, 'ok', $rows) :
            show(0, 'fail');
    }

    //清空購物車
    public function clear_cart()
    {
        $sql = "delete from shop_cart where userid=?";
        $stmt = $this->pdo->prepare($sql);
        $this->pdo->execute(array($this->user_id));
        $rows = $stmt->rowCount();
        return $rows ?
            show(1, 'ok', $rows) :
            show(0, 'fail');
    }

    //從購物車中刪除商品
    public function remove_cart($productid)
    {
        $sql = "delete from shop_cart where productid=? and userid=?";
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute(array($productid, $_SESSION['user_id']));
        $rows = $stmt->rowCount();
        return $rows ?
            show(1, 'ok', $rows) :
            show(0, 'fail');
    }
}

//處理數據
function show($status, $message, $data = array())
{
    $result = array(
        'status' => $status,
        'message' => $message,
        'data' => $data
    );
    exit(json_encode($result));
}

//簡單使用
$user = [
    'host' => '',
    'user' => 'root',
    'pwd' => 'root',
    'db' => 'shop',
];
$productid = intval($_POST['productid']);
$num = intval($_POST['num']);
$cart = new Cart($user);
//添加到購物車
$cart->add_cart($productid, $num);
//刪除指定的商品
$cart->remove_cart($productid);
//清空
$cart->clear_cart();
?>