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 相关文章推荐
使用 MySQL 开始 PHP 会话
Dec 21 PHP
比较全面的PHP数组的使用方法小结
Sep 23 PHP
rephactor 优秀的PHP的重构工具
Jun 09 PHP
php 中的4种标记风格介绍
May 10 PHP
PHP四舍五入精确小数位及取整
Jan 14 PHP
PHP实现克鲁斯卡尔算法实例解析
Aug 22 PHP
php基本函数汇总
Jul 09 PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 PHP
PHP构造函数与析构函数用法示例
Sep 28 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 PHP
php pdo操作数据库示例
Mar 10 PHP
如何通过PHP实现Des加密算法代码实例
May 09 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在线打包程序源码
2008/07/27 PHP
php auth_http类库进行身份效验
2009/03/19 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
Laravel 简单实现Ajax滚动加载示例
2019/10/22 PHP
javascript 图片裁剪技巧解读
2012/11/15 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
JavaScript 验证码的实例代码(附效果图)
2013/03/22 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
JavaScript实现答题评分功能页面
2020/06/24 Javascript
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
python读取文件名并改名字的实例
2019/01/07 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
python如何调用php文件中的函数详解
2020/12/29 Python
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
英国医生在线预约:Top Doctors
2019/10/30 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
致铅球运动员广播稿精选
2014/01/12 职场文书
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
上市公司董事长岗位职责
2015/04/16 职场文书
企业投资意向书
2015/05/09 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL