zoukankan      html  css  js  c++  java
  • php MyPdo封装

    <?php
    class MyPDO{
        private $type;      //数据库类别
        private $host;      //主机地址
        private $port;      //端口号
        private $dbname;    //数据库名
        private $charset;   //字符集
        private $user;      //用户名
        private $pwd;       //密码
        private $pdo;       //保存PDO对象
        private static $instance;
        private function __construct($param) {
            $this->initParam($param);
            $this->initPDO();
            $this->initException();
        }
        private function __clone() {
        }
        public static function getInstance($param=array()){
            if(!self::$instance instanceof self)
                self::$instance=new self($param);
            return self::$instance;
        }
        //初始化参数
        private function initParam($param){
            $this->type=$param['type']??'mysql';
            $this->host=$param['host']??'127.0.0.1';
            $this->port=$param['port']??'3306';
            $this->dbname=$param['dbname']??'sel';
            $this->charset=$param['charset']??'utf8';
            $this->user=$param['user']??'root';
            $this->pwd=$param['pwd']??'';
        }
        //初始化PDO
        private function initPDO(){
            try{
                $dsn="{$this->type}:host={$this->host};port={$this->port};dbname={$this->dbname};charset={$this->charset}";
                $this->pdo=new PDO($dsn, $this->user, $this->pwd);
            } catch (PDOException $ex) {
                $this->showException($ex);
                exit;
            }
        }
        
        //显示异常
        private function showException($ex,$sql=''){
            if($sql!=''){
                echo 'SQL语句执行失败<br>';
                echo '错误的SQL语句是:'.$sql,'<br>';
            }
            echo '错误编号:'.$ex->getCode(),'<br>';
            echo '错误行号:'.$ex->getLine(),'<br>';
            echo '错误文件:'.$ex->getFile(),'<br>';
            echo '错误信息:'.$ex->getMessage(),'<br>';
        }
        //设置异常模式
        private function initException(){
            $this->pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        }
    
        //执行增、删、改操作
        public function exec($sql){
            try{
                return $this->pdo->exec($sql);
            } catch (PDOException $ex) {
                $this->showException($ex, $sql);
                exit;
            }
        }
        //获取自动增长的编号
        public function lastInsertId(){
            return $this->pdo->lastInsertId();
        }
    
        //判断匹配的类型
        private function fetchType($type){
            switch ($type){
                case 'num':
                    return PDO::FETCH_NUM;
                case 'both':
                    return PDO::FETCH_BOTH;
                case 'obj':
                    return PDO::FETCH_OBJ;
                default:
                     return PDO::FETCH_ASSOC;
            }
        }
        //获取所有数据 ,返回二维数组
        public function fetchAll($sql,$type='assoc'){
            try{
                $stmt=$this->pdo->query($sql);  //获取PDOStatement对象
                $type= $this->fetchType($type); //获取匹配方法
                return $stmt->fetchAll($type);
            } catch (Exception $ex) {
                $this->showException($ex, $sql);
            }
        }
        //获取一维数组
        public function fetchRow($sql,$type='assoc'){
            try{
                $stmt=$this->pdo->query($sql);  //获取PDOStatement对象
                $type= $this->fetchType($type); //获取匹配方法
                return $stmt->fetch($type);
            } catch (Exception $ex) {
                $this->showException($ex, $sql);
                exit;
            }
        }
        //返回一行一列
        public function fetchColumn($sql){
            try{
                 $stmt=$this->pdo->query($sql);
                return $stmt->fetchColumn();
            } catch (Exception $ex) {
                $this->showException($ex, $sql);
                exit;
            }
        }
    }
    
    //测试
    $param=array(
       
    );
    $mypdo= MyPDO::getInstance($param);
    
    if($mypdo->exec("insert into news values (null,'11','1111',unix_timestamp())"))
        echo '自动增长的编号是:'.$mypdo->lastInsertId ();
    
    $list=$mypdo->fetchColumn('select count(*) from news');
    var_dump($list);
    ?>
    

      

  • 相关阅读:
    Leetcode 16.25 LRU缓存 哈希表与双向链表的组合
    Leetcode437 路径总和 III 双递归与前缀和
    leetcode 0404 二叉树检查平衡性 DFS
    Leetcode 1219 黄金矿工 暴力回溯
    Leetcode1218 最长定差子序列 哈希表优化DP
    Leetcode 91 解码方法
    Leetcode 129 求根到叶子节点数字之和 DFS优化
    Leetcode 125 验证回文串 双指针
    Docker安装Mysql记录
    vmware虚拟机---Liunx配置静态IP
  • 原文地址:https://www.cnblogs.com/hoganhome/p/15088794.html
Copyright © 2011-2022 走看看