zoukankan      html  css  js  c++  java
  • PDO单例模式代码展示

    <?php 
    class MyPDO
    {
        private static $instance;  //保存对象
        private $host;      //主机地址
        private $dbname;    //数据库名字
        private $port;      //端口
        private $user;      //用户名
        private $pwd;       //密码
        private $charset;   //字符集
        private $link;      //连接对象
    
    
        private function __construct($data){
    
            $this->initParam($data);
            $this->getPDO();
            $this->errorMode();
        }
    
        private function __clone(){
    
        }
    
        //获取单例
        public static function getInstance($data=array()){
            if(!self::$instance instanceof self){
                return self::$instance=new self($data);
            }
            return self::$instance;
        }
    
        //初始化参数
        private function initParam($data){
            $this->host=$data['host'] ?? 'localhost';
            $this->dbname=$data['dbname'] ?? 'my_db';
            $this->port=$data['port'] ?? '3306';
            $this->user=$data['user'] ?? 'root';
            $this->pwd=$data['host'] ?? 'root';
            $this->charset=$data['charset'] ?? 'utf8';
        }
    
        //显示错误
        private function showError($e,$sql=null){
            echo "错误信息".$e->getMessage()."<br>";
            echo "错误代码".$e->getCode()."<br>";
            echo "错误文件".$e->getFile()."<br>";
            echo "错误行号".$e->getLine().'<br>';
            if($sql!=null){
                echo "错误sql语句".$sql;
            }
        }
        //连接数据库
        private function getPDO(){
            try {
                $this->link= new PDO("mysql:host={$this->host};port={$this->port};dbname={$this->dbname};charset={$this->charset}","{$this->user}","{$this->pwd}");
            } catch (PDOException $e) {
               $this->showError($e);
                exit;
            }
        }
    
        //设置错误模式
        private function errorMode(){
            $this->link->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        }
    
        
    
        /**
         * 增删改功能
         * @param string sql语句
         * @return int 受影响的行数
         */
        public function exec($sql){
            try {
                return $row=$this->link->exec($sql);
            } catch (PDOException $e) {
                $this->showError($e,$sql);
                exit;
            }
    
        }
    
        /**
         * 获取二维数组结果集
         * @param string sql
         * @return PDOStatement 结果集
         */
    
         public function fetchAll($sql){
             try{
                $stmt=$this->link->query($sql);
                return $stmt->fetchAll();
    
             }catch(PDOException $e){
                $this->showError($e,$sql);
             }
    
         }
    
         /**
          * 获取一维数组结果集
          *@param string sql
          *@return PDOStatement 结果集
          */
          public function fetch($sql){
              try {
                $stmt= $this->link->query($sql);
                return $stmt->fetch();
              } catch (PDOException $e) {
                  $this->showError($e,$sql);
              }
    
          }
    
          /**
           * 获取单行单列
           * @param string sql
           * @return mixed 内容
           */
          public  function fetchColumn($sql){
              try {
                $stmt=$this->link->query($sql);
                return $stmt->fetchColumn();
              } catch (PDOException $e) {
                  $this->showError($e,$sql);
              }
          }
    
    }
    
    
    $pdo=MyPDO::getInstance();
    $arr=$pdo->fetchColumn("select count(*) from my_bank");
    print_r($arr);
  • 相关阅读:
    Scott的ASP.net MVC框架系列文章之一
    NHibernate配置的总体流程(转载)
    深入浅出MFC》学习笔记之一
    用javascript实现选择下拉菜单间的数据转移,用javascript实现超强的万年历,javascript弹出窗口后,关闭窗口时不弹出对话框
    深入理解动态库
    C#中读取文件内容
    a id="saveButton" href="#" onclick="javascript:startUpload();"Upload !!/a
    如何调用DLL (基于Visual C++6.0的DLL编程实现)
    MSDN获取网站,www.bd66.com
    应用MFC开发高级应用程序
  • 原文地址:https://www.cnblogs.com/xiaowie/p/14312479.html
Copyright © 2011-2022 走看看