• php pdo 简单例子 何苦


    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']??'test';
            $this->charset=$param['charset']??'utf8';
            $this->user=$param['user']??'root';
            $this->pwd=$param['pwd']??'root';
        }
        //初始化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;
            }
    
        }
    
    }
    
    
  • 相关阅读:
    arcgis开发笔记【silverlight开发资料】
    arcgis开发笔记【系统介绍】
    Vs2010架构设计概述
    arcgis开发笔记【Oracle使用汇总】
    arcgis开发笔记【silverlight 发布rest地图服务】
    arcgis开发笔记【系统的安装】
    关于处理Ajax请求的一些心得
    IE浏览器Css选择的优先问题
    requestFeature() must be called before adding content错误
    Error inflating class错误
  • 原文地址:https://www.cnblogs.com/fuqian/p/16196143.html
Copyright © 2020-2023  润新知