• 技术文章 >php教程 >php手册

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

    2016-06-13 09:19:04原创485

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


    本文实例讲述了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入门到就业线上直播课:查看学习

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    千万级数据并发解决方案(理论+实战):点击学习

    Mysql单表千万级数据量的查询优化与性能分析

    Mysql主从原理及其在高并发系统中的应用

    专题推荐:PHP PDO mysql pdo
    上一篇:PHP中PDO_MYSQL扩展安装的2种方法 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• smarty模板引擎从php中获取数据的方法,smarty模板• PHP类中的魔术方法(Magic Method)简明总结,magicmethod• php利用新浪接口查询ip获取地理位置• mysql 数据备份类代码• PHP之判断用户语言跳转网页
    1/1

    PHP中文网