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和MySQL保存和输出图片
Oct 09 PHP
打造计数器DIY三步曲(中)
Oct 09 PHP
基于mysql的bbs设计(三)
Oct 09 PHP
PHP 判断变量类型实现代码
Oct 23 PHP
ajax实现无刷新分页(php)
Jul 18 PHP
关于初学PHP时的知识积累总结
Jun 07 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
PHP连接和操作MySQL数据库基础教程
Sep 29 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
Dec 24 PHP
使用Appcan客户端自动更新PHP版本号(全)
Jul 31 PHP
PHP中Cookie的使用详解(简单易懂)
Apr 28 PHP
laravel5.2表单验证,并显示错误信息的实例
Sep 29 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代码审核的详细介绍
2013/06/13 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
对PHP依赖注入的理解实例分析
2016/10/09 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
PHP的Trait机制原理与用法分析
2019/10/18 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
PHP7修改的函数
2021/03/09 PHP
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
jQuery简单实现图片预加载
2015/04/20 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
2018/09/19 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
Python线程详解
2015/06/24 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
Python3 replace()函数使用方法
2018/03/19 Python
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
Python的历史与优缺点整理
2020/05/26 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
2013/01/30 HTML / CSS
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
周年庆促销方案
2014/03/15 职场文书
初中学生期末评语
2014/04/24 职场文书
申请吧主发表的感言
2015/08/03 职场文书
Golang生成Excel文档的方法步骤
2021/06/09 Golang
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技