php+pdo实现的购物车类完整示例

 更新时间:2020年01月10日 11:51:14   作者:luyaran  
这篇文章主要介绍了php+pdo实现的购物车类,结合完整实例形式分析了PHP结合pdo操作数据库读写实现购物车功能相关实现与使用方法,需要的朋友可以参考下

本文实例讲述了php+pdo实现的购物车类。分享给大家供大家参考,具体如下:

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

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP+MySQL购物车开发专题》、《php面向对象程序设计入门教程》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php正则表达式用法总结》、及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • php使用crypt()函数进行加密

    php使用crypt()函数进行加密

    这篇文章主要为大家详细介绍了php使用crypt()函数进行加密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • php画图实例

    php画图实例

    这篇文章主要介绍了php画图的方法,实例讲述了基于PHP绘制图像与文字的方法,需要的朋友可以参考下
    2014-11-11
  • php获取ip及网址的简单方法(必看)

    php获取ip及网址的简单方法(必看)

    下面小编就为大家带来一篇php获取ip及网址的简单方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • php中array_unshift()修改数组key注意事项分析

    php中array_unshift()修改数组key注意事项分析

    这篇文章主要介绍了php中array_unshift()修改数组key注意事项,实例分析了array_unshift()函数在处理键值为数字类型时自动转换键值的情况,需要的朋友可以参考下
    2016-05-05
  • PHP 循环列出目录内容的函数代码

    PHP 循环列出目录内容的函数代码

    PHP循环列出目录内容代码,一个功能函数。
    2010-05-05
  • PHP读取文件并可支持远程文件的代码分享

    PHP读取文件并可支持远程文件的代码分享

    PHP技巧:读取文件并可支持远程文件,给出三个案例,让你更容易理解 php读取文件
    2012-10-10
  • PHP实现合并discuz用户

    PHP实现合并discuz用户

    本文给大家分享的是如何实现整合DISCUZ用户的方法,第一种比较直接,适合只保留一个论坛的情形,第二个比较完善,适合两个论坛同时运营,小伙伴们根据自己的情况,自由选择。
    2015-08-08
  • PHP在线调试执行的实现方法(附demo源码)

    PHP在线调试执行的实现方法(附demo源码)

    这篇文章主要介绍了PHP在线调试执行的实现方法,实例分析了PHP实现在线调试运行的原理,步骤与具体实现代码,并附带demo源码供读者下载参考,需要的朋友可以参考下
    2016-04-04
  • PHP 程序员也要学会使用“异常”

    PHP 程序员也要学会使用“异常”

    “PHP程序员,特别是从php4,甚至是PHP3中成长起来的程序员,很多都不习惯使用抛出异常这种错误处理方式。虽然php5引入了异常处理机制,但是很多php程序员还是没有真正的掌握并使用它。
    2009-06-06
  • php格式化json函数示例代码

    php格式化json函数示例代码

    这篇文章主要介绍了php格式化json函数,结合实例形式分析了php使用自定义函数实现json格式化的方法,涉及php数组转json、流程控制及字符串操作等技巧,需要的朋友可以参考下
    2016-05-05

最新评论