PHP实现PDO的mysql数据库操作类


Posted in PHP onDecember 12, 2014

本文实例讲述了PHP实现PDO的mysql数据库操作类。分享给大家供大家参考。具体分析如下:

dbconfig类负责配置数据库访问信息,包括:服务器地址、端口、数据库实例名、用户名、用户密码、字符集等.

dbtemplate类集合了对数据库的访问操作,主要有以下几个操作:

1. queryrows:返回多行记录

2. queryrow:返回为单条记录

3. queryforint:查询单字段,返回整数

4. queryforfloat:查询单字段,返回浮点数(float)

5. queryfordouble:查询单字段,返回浮点数(double)

6. queryforobject:查询单字段,返回对象,实际类型有数据库决定

7. update : 执行一条更新语句. insert / upadate / delete

具体代码如下:

class dbconfig { 

    private static $dbms = "mysql"; 

    private static $host = '127.0.0.1'; 

    private static $port = '3306'; 

    private static $username = ''; 

    private static $password = ''; 

    private static $dbname = ''; 

    private static $charset = 'utf-8'; 

    private static $dsn; 

 

    /** 

     * 

     * @return   返回pdo dsn配置 

     */ 

    public static function getdsn() { 

        if (!isset(self::$dsn)) { 

            self::$dsn = self::$dbms . ':host=' . self::$host . ';port=' . 

                    self::$port . ';dbname=' . self::$dbname; 

            if (strlen(self::$charset) > 0) { 

                self::$dsn = self::$dsn . ';charset=' . self::$charset; 

            } 

        } 

        return self::$dsn; 

    } 

 

    /** 

     * 设置mysql数据库服务器主机 

     * @param  $host 主机的ip地址 

     */ 

    public static function sethost($host) { 

        if (isset($host) && strlen($host) > 0) 

            self::$host = trim($host); 

    } 

 

    /** 

     * 设置mysql数据库服务器的端口 

     * @param  $port 端口 

     */ 

    public static function setport($port) { 

        if (isset($port) && strlen($port) > 0) 

            self::$port = trim($port); 

    } 

 

    /** 

     * 设置mysql数据库服务器的登陆用户名 

     * @param  $username 

     */ 

    public static function setusername($username) { 

        if (isset($username) && strlen($username) > 0) 

            self::$username = $username; 

    } 

 

    /** 

     * 设置mysql数据库服务器的登陆密码 

     * @param  $password 

     */ 

    public static function setpassword($password) { 

        if (isset($password) && strlen($password) > 0) 

            self::$password = $password; 

    } 

 

    /** 

     * 设置mysql数据库服务器的数据库实例名 

     * @param  $dbname 数据库实例名 

     */ 

    public static function setdbname($dbname) { 

        if (isset($dbname) && strlen($dbname) > 0) 

            self::$dbname = $dbname; 

    } 

 

    /** 

     * 设置数据库编码 

     * @param  $charset 

     */ 

    public static function setcharset($charset) { 

        if (isset($charset) && strlen($charset) > 0) 

            self::$charset = $charset; 

    } 

 

} 

 

/** 

 * 一个数据库操作工具类 

 * 

 * @author zhjiun@gmail.com 

 */ 

class dbtemplate { 

 

    /** 

     * 返回多行记录 

     * @param  $sql 

     * @param  $parameters 

     * @return  记录数据 

     */ 

    public function queryrows($sql, $parameters = null) { 

        return $this->exequery($sql, $parameters); 

    } 

 

    /** 

     * 返回为单条记录 

     * @param  $sql 

     * @param  $parameters 

     * @return 

     */ 

    public function queryrow($sql, $parameters = null) { 

        $rs = $this->exequery($sql, $parameters); 

        if (count($rs) > 0) { 

            return $rs[0]; 

        } else { 

            return null; 

        } 

    } 

 

    /** 

     * 查询单字段,返回整数 

     * @param  $sql 

     * @param  $parameters 

     * @return 

     */ 

    public function queryforint($sql, $parameters = null) { 

        $rs = $this->exequery($sql, $parameters); 

        if (count($rs) > 0) { 

            return intval($rs[0][0]); 

        } else { 

            return null; 

        } 

    } 

 

    /** 

     * 查询单字段,返回浮点数(float) 

     * @param  $sql 

     * @param  $parameters 

     * @return 

     */ 

    public function queryforfloat($sql, $parameters = null) { 

        $rs = $this->exequery($sql, $parameters); 

        if (count($rs) > 0) { 

            return floatval($rs[0][0]); 

        } else { 

            return null; 

        } 

    } 

 

    /** 

     * 查询单字段,返回浮点数(double) 

     * @param  $sql 

     * @param  $parameters 

     * @return 

     */ 

    public function queryfordouble($sql, $parameters = null) { 

        $rs = $this->exequery($sql, $parameters); 

        if (count($rs) > 0) { 

            return doubleval($rs[0][0]); 

        } else { 

            return null; 

        } 

    } 

 

    /** 

     * 查询单字段,返回对象,实际类型有数据库决定 

     * @param  $sql 

     * @param  $parameters 

     * @return 

     */ 

    public function queryforobject($sql, $parameters = null) { 

        $rs = $this->exequery($sql, $parameters); 

        if (count($rs) > 0) { 

            return $rs[0][0]; 

        } else { 

            return null; 

        } 

    } 

 

    /** 

     * 执行一条更新语句.insert / upadate / delete 

     * @param  $sql 

     * @param  $parameters 

     * @return  影响行数 

     */ 

    public function update($sql, $parameters = null) { 

        return $this->exeupdate($sql, $parameters); 

    } 

 

    private function getconnection() { 

        $conn = new pdo(dbconfig::getdsn(), dbconfig::getusername(), dbconfig::getpassword()); 

        $conn->setattribute(pdo::attr_case, pdo::case_upper); 

        return $conn;

    } 

 

    private function exequery($sql, $parameters = null) { 

        $conn = $this->getconnection(); 

        $stmt = $conn->prepare($sql); 

        $stmt->execute($parameters); 

        $rs = $stmt->fetchall(); 

        $stmt = null; 

        $conn = null; 

        return $rs; 

    } 

 

    private function exeupdate($sql, $parameters = null) { 

        $conn = $this->getconnection(); 

        $stmt = $conn->prepare($sql); 

        $stmt->execute($parameters); 

        $affectedrows = $stmt->rowcount(); 

        $stmt = null; 

        $conn = null; 

        return $affectedrows; 

    } 

}

pdo始于php5,php6中将默认使用pdo,不同于以前版本中混乱的数据库操作方式,pdo统一了对数据库的访问方式,给编程带来了极大的便利性,本工具类就是基于pdo,模拟了java世界spring框架中的jdbctemplate操作类.

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

PHP 相关文章推荐
PHP编程中八种常见的文件操作方式
Nov 19 PHP
用php过滤危险html代码的函数
Jul 22 PHP
php将字符串转化成date存入数据库的两种方式
Apr 28 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
Jul 08 PHP
PHP解析目录路径的3个函数总结
Nov 18 PHP
php恢复数组的key为数字序列的方法
Apr 28 PHP
php替换字符串中间字符为省略号的方法
May 04 PHP
php实现给二维数组中所有一维数组添加值的方法
Feb 04 PHP
Thinkphp5行为使用方法汇总
Dec 21 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 PHP
PHP获取HTTP body内容的方法
Dec 31 PHP
laravel使用Faker数据填充的实现方法
Apr 12 PHP
PHP实现的sqlite数据库连接类
Dec 12 #PHP
php+mysql数据库实现无限分类的方法
Dec 12 #PHP
PHP中if和or运行效率对比
Dec 12 #PHP
php实现高效获取图片尺寸的方法
Dec 12 #PHP
CI框架中cookie的操作方法分析
Dec 12 #PHP
jQuery Mobile + PHP实现文件上传
Dec 12 #PHP
分享一段PHP制作的中文拼音首字母工具类
Dec 11 #PHP
You might like
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
destoon二次开发入门示例
2014/06/20 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
在模板页面的js使用办法
2010/04/01 Javascript
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
javascript 星级评分效果(手写)
2012/12/24 Javascript
javascript中encodeURI和decodeURI方法使用介绍
2013/05/06 Javascript
JavaScript实现简单图片滚动附源码下载
2014/06/17 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
在Python中使用next()方法操作文件的教程
2015/05/24 Python
Python数据类型学习笔记
2016/01/13 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
使用浏览器访问python写的服务器程序
2019/10/10 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
2021/02/22 Python
班长岗位职责
2013/11/10 职场文书
八一建军节感言
2014/02/28 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
中秋节随笔
2015/08/15 职场文书