资讯专栏INFORMATION COLUMN

PDO实现购物车类

cnsworder / 340人阅读

摘要:发现忘记的差不多了,也不会写了想着写点什么东西简单的写个购物车类请先登录添加商品到购物车修改购买数量清空购物车从购物车中删除商品处理数据简单使用添加到购物车删除指定的商品清空

发现pdo忘记的差不多了,sql也不会写了 想着写点什么东西 简单的写个购物车类

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();
?>
    

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23148.html

相关文章

  • PHP 数据库操作

    摘要:操作数据库的种形式使用扩展类库推荐使用扩展类库这是类库的升级版,但已经不推荐使用扩展包含哪三个类与区别可以支持多种数据库,而且操作方法一致只支持数据库如何使用连接数据库什么是如何关闭连接通过来连接数据库,其中必须传入数据源名称数据源名称是 PHP操作数据库的2种形式 使用 PDO 扩展类库(推荐) 使用 Mysqli 扩展类库(这是Mysql类库的升级版,但已经不推荐使用) PDO...

    Jingbin_ 评论0 收藏0
  • 写一个“特殊”的查询构造器 - (二、第一条语句)

    摘要:注在常驻内存单例模式下,这种多次用一个类进行查询的情形很常见。断线重连对于典型环境而言,一次的查询已经随着的请求而结束,的垃圾回收功能会回收一次请求周期内的数据。但在常驻内存的环境下,尤其是单例模式下,数据库驱动类可能一直在内存中不被销毁。 构造、执行第一条语句 上一篇完成了代码结构的搭建和 PDO 的基础封装,这一篇我们来讲如何构造一个最基本的 SQL 语句,并执行得到结果。 que...

    dadong 评论0 收藏0
  • 写一个“特殊”的查询构造器 - (七、DML 语句、事务)

    摘要:同样的,添加属性,修改函数构造语句的方法基类中添加方法检测有没有设置子句构建语句参数绑定返回影响的行数更新数据示例相比,语句更为简单,只需子句即可。 查询语句 (DQL) 的构造功能开发完毕,我们再给查询构造器增加一些对 DML (Data Manipulation Language) 语句的支持,如简单的 insert、update、delete 操作。 insert 我们先回顾下 ...

    lookSomeone 评论0 收藏0
  • Laravel 学习笔记之 Query Builder 源码解析(中)

    说明:本篇主要学习数据库连接阶段和编译SQL语句部分相关源码。实际上,上篇已经聊到Query Builder通过连接工厂类ConnectionFactory构造出了MySqlConnection实例(假设驱动driver是mysql),在该MySqlConnection中主要有三件利器:IlluminateDatabaseMysqlConnector;IlluminateDatabaseQuery...

    zhou_you 评论0 收藏0

发表评论

0条评论

cnsworder

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<