首页 > 语言 > PHP > 正文

PDO的mysql数据库操作类

2024-09-04 11:44:15
字体:
来源:转载
供稿:网友

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表