当前位置:首页 > PHP教程 > php类库 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-03 16:02:46 浏览: 评论:0 

这篇文章主要介绍了PHP实现PDO的mysql数据库操作类,其中dbconfig类负责配置数据库访问信息,dbtemplate类集合了对数据库的访问操作,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了PHP实现PDO的mysql数据库操作类。分享给大家供大家参考。具体分析如下:

dbconfig类负责配置数据库访问信息,包括:服务器地址、端口、数据库实例名、用户名、用户密码、字符集等.

dbtemplate类集合了对数据库的访问操作,主要有以下几个操作:

1. queryrows:返回多行记录

2. queryrow:返回为单条记录

3. queryforint:查询单字段,返回整数

4. queryforfloat:查询单字段,返回浮点数(float)

5. queryfordouble:查询单字段,返回浮点数(double)

6. queryforobject:查询单字段,返回对象,实际类型有数据库决定

7. update : 执行一条更新语句. insert / upadate / delete

具体代码如下:

  1. class dbconfig { 
  2.     private static $dbms = "mysql"
  3.     private static $host = '127.0.0.1'
  4.     private static $port = '3306'
  5.     private static $username = ''
  6.     private static $password = ''
  7.     private static $dbname = ''
  8.     private static $charset = 'utf-8'
  9.     private static $dsn
  10.  
  11.     /** 
  12.      * 
  13.      * @return   返回pdo dsn配置 
  14.      */ 
  15.     public static function getdsn() { 
  16.         if (!isset(self::$dsn)) { 
  17.             self::$dsn = self::$dbms . ':host=' . self::$host . ';port=' . 
  18.                     self::$port . ';dbname=' . self::$dbname
  19.             if (strlen(self::$charset) > 0) { 
  20.                 self::$dsn = self::$dsn . ';charset=' . self::$charset
  21.             } 
  22.         } 
  23.         return self::$dsn
  24.     } 
  25.  
  26.     /** 
  27.      * 设置mysql数据库服务器主机 
  28.      * @param  $host 主机的ip地址 
  29.      */ 
  30.     public static function sethost($host) { 
  31.         if (isset($host) && strlen($host) > 0) 
  32.             self::$host = trim($host); 
  33.     } 
  34.  
  35.     /** 
  36.      * 设置mysql数据库服务器的端口 
  37.      * @param  $port 端口 
  38.      */ 
  39.     public static function setport($port) { 
  40.         if (isset($port) && strlen($port) > 0) 
  41.             self::$port = trim($port); 
  42.     } 
  43.  
  44.     /** 
  45.      * 设置mysql数据库服务器的登陆用户名 
  46.      * @param  $username 
  47.      */ 
  48.     public static function setusername($username) { 
  49.         if (isset($username) && strlen($username) > 0) 
  50.             self::$username = $username
  51.     } 
  52.  
  53.     /** 
  54.      * 设置mysql数据库服务器的登陆密码 
  55.      * @param  $password 
  56.      */ 
  57.     public static function setpassword($password) { 
  58.         if (isset($password) && strlen($password) > 0) 
  59.             self::$password = $password
  60.     } 
  61.  
  62.     /** 
  63.      * 设置mysql数据库服务器的数据库实例名 
  64.      * @param  $dbname 数据库实例名 
  65.      */ 
  66.     public static function setdbname($dbname) { 
  67.         if (isset($dbname) && strlen($dbname) > 0) 
  68.             self::$dbname = $dbname
  69.     } 
  70.  
  71.     /** 
  72.      * 设置数据库编码 
  73.      * @param  $charset 
  74.      */ 
  75.     public static function setcharset($charset) { 
  76.         if (isset($charset) && strlen($charset) > 0) 
  77.             self::$charset = $charset
  78.     } 
  79.  
  80.  
  81. /** 
  82.  * 一个数据库操作工具类 
  83.  * 
  84.  * @author zhjiun@gmail.com  
  85.  */ 
  86. class dbtemplate { 
  87.  
  88.     /** 
  89.      * 返回多行记录 
  90.      * @param  $sql 
  91.      * @param  $parameters 
  92.      * @return  记录数据 
  93.      */ 
  94.     public function queryrows($sql$parameters = null) { 
  95.         return $this->exequery($sql$parameters); 
  96.     } 
  97.  
  98.     /** 
  99.      * 返回为单条记录 
  100.      * @param  $sql 
  101.      * @param  $parameters 
  102.      * @return 
  103.      */ 
  104.     public function queryrow($sql$parameters = null) { 
  105.         $rs = $this->exequery($sql$parameters); 
  106.         if (count($rs) > 0) { 
  107.             return $rs[0]; 
  108.         } else { 
  109.             return null; 
  110.         } 
  111.     } 
  112.  
  113.     /** 
  114.      * 查询单字段,返回整数 
  115.      * @param  $sql 
  116.      * @param  $parameters 
  117.      * @return 
  118.      */ 
  119.     public function queryforint($sql$parameters = null) { 
  120.         $rs = $this->exequery($sql$parameters); 
  121.         if (count($rs) > 0) { 
  122.             return intval($rs[0][0]); 
  123.         } else { 
  124.             return null; 
  125.         } 
  126.     } 
  127.  
  128.     /** 
  129.      * 查询单字段,返回浮点数(float) 
  130.      * @param  $sql 
  131.      * @param  $parameters 
  132.      * @return 
  133.      */ 
  134.     public function queryforfloat($sql$parameters = null) { 
  135.         $rs = $this->exequery($sql$parameters); 
  136.         if (count($rs) > 0) { 
  137.             return floatval($rs[0][0]); 
  138.         } else { 
  139.             return null; 
  140.         } 
  141.     } 
  142.  
  143.     /** 
  144.      * 查询单字段,返回浮点数(double) 
  145.      * @param  $sql 
  146.      * @param  $parameters 
  147.      * @return 
  148.      */ 
  149.     public function queryfordouble($sql$parameters = null) { 
  150.         $rs = $this->exequery($sql$parameters); 
  151.         if (count($rs) > 0) { 
  152.             return doubleval($rs[0][0]); 
  153.         } else { 
  154.             return null; 
  155.         } 
  156.     } 
  157.  
  158.     /** 
  159.      * 查询单字段,返回对象,实际类型有数据库决定 
  160.      * @param  $sql 
  161.      * @param  $parameters 
  162.      * @return 
  163.      */ 
  164.     public function queryforobject($sql$parameters = null) { 
  165.         $rs = $this->exequery($sql$parameters); 
  166.         if (count($rs) > 0) { 
  167.             return $rs[0][0]; 
  168.         } else { 
  169.             return null; 
  170.         } 
  171.     } 
  172.  
  173.     /** 
  174.      * 执行一条更新语句.insert / upadate / delete 
  175.      * @param  $sql 
  176.      * @param  $parameters 
  177.      * @return  影响行数 
  178.      */ 
  179.     public function update($sql$parameters = null) { 
  180.         return $this->exeupdate($sql$parameters); 
  181.     } 
  182.  
  183.     private function getconnection() { 
  184.         $conn = new pdo(dbconfig::getdsn(), dbconfig::getusername(), dbconfig::getpassword()); 
  185.         $conn->setattribute(pdo::attr_case, pdo::case_upper); 
  186.         return $conn
  187.     } 
  188.  
  189.     private function exequery($sql$parameters = null) { 
  190.         $conn = $this->getconnection(); 
  191.         $stmt = $conn->prepare($sql); 
  192.         $stmt->execute($parameters); 
  193.         $rs = $stmt->fetchall(); 
  194.         $stmt = null; 
  195.         $conn = null; 
  196.         return $rs
  197.     } 
  198.  
  199.     private function exeupdate($sql$parameters = null) { 
  200.         $conn = $this->getconnection(); 
  201.         $stmt = $conn->prepare($sql); 
  202.         $stmt->execute($parameters); 
  203.         $affectedrows = $stmt->rowcount(); 
  204.         $stmt = null; 
  205.         $conn = null; 
  206.         return $affectedrows
  207.     } 

pdo始于php5,php6中将默认使用pdo,不同于以前版本中混乱的数据库操作方式,pdo统一了对数据库的访问方式,给编程带来了极大的便利性,本工具类就是基于pdo,模拟了java世界spring框架中的jdbctemplate操作类.

希望本文所述对大家的PHP程序设计有所帮助。

Tags: PDO mysql数据库操作类

分享到: