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 缓冲的免费实现方法
Oct 09 PHP
PHP写MySQL数据 实现代码
Jun 15 PHP
细谈php中SQL注入攻击与XSS攻击
Jun 10 PHP
php正则替换处理HTML页面的方法
Jun 17 PHP
ThinkPHP安装和设置
Jul 27 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
Aug 11 PHP
PHP钩子与简单分发方式实例分析
Sep 04 PHP
浅谈PHP进程管理
Mar 08 PHP
PHP迭代器和生成器用法实例分析
Sep 28 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 PHP
如何在PHP中使用AES加密算法加密数据
Jun 24 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/06 PHP
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
golang与PHP输出excel示例
2016/07/22 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
你所要知道JS(DHTML)中的一些技巧
2007/01/09 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
javascript作用域链与执行环境详解
2017/03/25 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
NodeJS安装图文教程
2018/04/19 NodeJs
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
详解python3百度指数抓取实例
2016/12/12 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
2019/01/08 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
python代理工具mitmproxy使用指南
2019/07/04 Python
python画双y轴图像的示例代码
2019/07/07 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
python如何写出表白程序
2020/06/01 Python
python语言中有算法吗
2020/06/16 Python
美国高端寝具品牌:Coyuchi
2017/02/08 全球购物
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
数控专业推荐信范文
2013/12/02 职场文书
python opencv通过4坐标剪裁图片
2021/06/05 Python