封装一个PDO_MySQL工具类

PDO_MySQL工具类

功能:

  1. 单例创建工具类对象,并连接MySQL
  2. 对mysql_query做封装,错误时打印错误SQL语句、出错信息、出错码
  3. 查询方法1:返回查询的全部结果,并作为数组返回
  4. 查询方法2:返回第一行数据,并作为数据返回
  5. 查询方法3:返回第一行的第一列数据,并作为数据返回
<?php
class PDODB implements I_DAO {
    //属性列表
    private $_host;
    private $_port;
    private $_username;
    private $_password;
    private $_charset;
    private $_dbname;

    private $_dsn;
    private $_driver_options;
    private $_pdo;
    //单例的实现
    private static $_instance;//单例对象
    private function __construct($config) {
        //初始化数据库操作
        $this->_initParams($config);//初始化配置参数
        $this->_initDSN();//初始化DSN
        $this->_initDriverOptions();//初始化驱动选项
        $this->_initPDO();//初始化pdo对象
    }
    private function __clone() {

    }
    public static function getInstance($config) {
        if (! static::$_instance instanceof static) {
            static::$_instance = new static($config);
        }
        return static::$_instance;
    }

    //初始化配置参数
    private function _initParams($config) {
        //初始化数据
        $this->_host = isset($config['host']) ? $config['host'] : 'localhost';
        $this->_port = isset($config['port']) ? $config['port'] : '3306';
        $this->_username = isset($config['username']) ? $config['username'] : 'root';
        $this->_password = isset($config['password']) ? $config['password'] : '';
        $this->_charset = isset($config['charset']) ? $config['charset'] : 'utf8';
        $this->_dbname = isset($config['dbname']) ? $config['dbname'] : '';
    }
    //初始化DSN
    private function _initDSN() {
        $this->_dsn = "mysql:host=$this->_host;port=$this->_port;dbname=$this->_dbname";
    }
    //初始化驱动选项
    private function _initDriverOptions() {
        $this->_driver_options = array(
            PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES $this->_charset",
            );
    }
    //初始化pdo对象
    private function _initPDO() {
        $this->_pdo = new PDO($this->_dsn, $this->_username, $this->_password, $this->_driver_options);
    }

    //执行SQL语句
    public function query($sql) {
        if(! $result = $this->_pdo->query($sql))
        {
            $error_info = $this->_pdo->errorInfo();
            echo "<br />执行失败。";
            echo "<br />失败的sql语句为:" . $sql;
            echo "<br />出错信息为:" . $error_info[2];
            echo "<br />错误代号为:" . $error_info[1];
            die;
        }
        return $result;
    }

    //获取全部数据
    public function getAll($sql) {
        //执行
        $result = $this->query($sql);
        //获取数据,关联
        $list = $result->fetchAll(PDO::FETCH_ASSOC);
        //关闭光标(释放)
        $result->closeCursor();
        return $list;
    }

    //获取一行数据
    public function getRow($sql) {
        $result = $this->query($sql);
        $row = $result->fetch(PDO::FETCH_ASSOC);
        $result->closeCursor();
        return $row;
    }

    //获取一个数据
    public function getOne($sql) {
        $result = $this->query($sql);
        $string = $result->fetchColumn();
        $result->closeCursor();
        return $string;
    }

    public function escapeString($data) {
        return $this->_pdo->quote($data);
    }   
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • pdo类PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,...
    桖辶殇阅读 895评论 0 0
  • 1.MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。My...
    黄花菜已凉阅读 4,603评论 3 60
  • Php:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象...
    廖马儿阅读 2,204评论 2 38
  • MySQL不权威总结 欢迎阅读 本文并非事无巨细的mysql学习资料,而是选择其中重要、困难、易错的部分进行系统地...
    liufxlucky365阅读 2,659评论 0 26
  • 华灯初照人 暮色已三分 心是玲珑镜 人如海底针 泥牛自沉海 青鸟空殷勤 惶惶无终日 离离草木深 何苦复来去 乱我青衣襟
    刘姑娘和李小姐阅读 222评论 1 4