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基础陷阱题(变量赋值)
Sep 12 PHP
解析PHP高效率写法(详解原因)
Jun 20 PHP
php异常处理使用示例
Feb 25 PHP
PHP中使用file_get_contents post数据代码例子
Feb 13 PHP
php中return的用法实例分析
Feb 28 PHP
php判断文件夹是否存在不存在则创建
Apr 09 PHP
两种php给图片加水印的实现代码
Apr 18 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
Dec 14 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
Dec 17 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 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中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
2019/04/10 Javascript
WebSocket的简单介绍及应用
2019/05/23 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
python实现解数独程序代码
2017/04/12 Python
kafka-python批量发送数据的实例
2018/12/27 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
法国家具及室内配件店:home24
2017/01/21 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
Sisley法国希思黎中国官网:享誉全球的奢华植物美容品牌
2019/06/30 全球购物
架构师岗位职责
2013/11/18 职场文书
社团文化节邀请函
2014/01/10 职场文书
老同学聚会感言
2014/02/23 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
环保倡议书100字
2014/05/15 职场文书
信访工作经验交流材料
2014/05/23 职场文书
2014幼儿园班主任工作总结
2014/12/04 职场文书
2015年党建工作总结
2015/03/30 职场文书