WEB教程基地:www.91ctc.com为你搭建学习WEB技术的优秀平台
网站地图 加入收藏 设为首页
您的位置:本站首页>>PHP>>PHP教程第八十二讲――PHP连接数据库:一个智能选择MySQL扩展的数据库连接类

PHP教程第八十二讲――PHP连接数据库:一个智能选择MySQL扩展的数据库连接类

[ 录入者:91ctc | 时间:2013-03-13 22:50:21 | 作者: 91ctc| 来源:本站 | 浏览: 次 ]

给出一个高手写的PHP公共类,用于查看当前PHP的扩展是否安装了Mysql扩展,如果已经安装,则使用MySQLi;否则,使用原始的连接方法,代码如下:

PHP Code复制内容到剪贴板
  1. class DB_Class {   
  2.         private $user;   
  3.         private $pass;   
  4.         private $host;   
  5.         private $db;   
  6.            
  7.         //构造函数   
  8.         public function __construct (){   
  9.             $num_args = func_num_args();   
  10.              
  11.             if($num_args > 0){   
  12.                 $args = func_get_args();   
  13.                 $this->host = $args[0];   
  14.                 $this->user = $args[1];   
  15.                 $this->pass = $args[2];   
  16.                 $this->connect();   
  17.             }   
  18.         }   
  19.         //检查MYSQLI扩展是否安装   
  20.         private function mysqliinstalled (){   
  21.             if (function_exists ("mysqli_connect")){   
  22.                 return true;   
  23.             } else {   
  24.                 return false;   
  25.             }   
  26.         }   
  27.            
  28.         //成员方法:连接数据库   
  29.         private function connect (){   
  30.             try {   
  31.                 //如果MySQLi存在,则使用   
  32.                 if ($this->mysqliinstalled()){   
  33.                     if (!$this->db = new mysqli ($this->host,$this->user,$this->pass)){   
  34.                         $exceptionstring = "Error connection to database: <br />";   
  35.                         $exceptionstring .= mysqli_connect_errno() . ": " . mysqli_connect_error();   
  36.                         throw new exception ($exceptionstring);   
  37.                     }   
  38.                 //否则使用老办法连接   
  39.                 } else {   
  40.                     if (!$this->db = mysql_connect ($this->host,$this->user,$this->pass)){   
  41.                         $exceptionstring = "Error connection to database: <br />";   
  42.                         $exceptionstring .= mysql_errno() . ": " . mysql_error();   
  43.                         throw new exception ($exceptionstring);   
  44.                     }   
  45.                 }   
  46.             } catch (exception $e) {   
  47.                 echo $e->getmessage();   
  48.             }   
  49.         }   
  50.            
  51.         //成员方法:选择数据库   
  52.         public function selectdb ($thedb){   
  53.             try {   
  54.                 //使用mysqli连接   
  55.                 if ($this->mysqliinstalled()){   
  56.                     if (!$this->db->select_db ($thedb)){   
  57.                         $exceptionstring = "Error opening database: $thedb: <br />";   
  58.                         $exceptionstring .= $this->db->errno . ": " . $this->db->error;   
  59.                         throw new exception ($exceptionstring);   
  60.                     }   
  61.                 //使用mysql连接   
  62.                 } else {   
  63.                     if (!mysql_select_db ($thedb$this->db)){   
  64.                         $exceptionstring = "Error opening database: $thedb: <br />";   
  65.                         $exceptionstring .= mysql_errno() . ": " . mysql_error();   
  66.                         throw new exception ($exceptionstring);   
  67.                     }   
  68.                 }   
  69.             } catch (exception $e) {   
  70.                 echo $e->getmessage();   
  71.             }   
  72.         }   
  73.            
  74.         //成员方法:执行一个SQL查询   
  75.         public function execute ($thequery){   
  76.             try {   
  77.                 //Mysqli方式   
  78.                 if ($this->mysqliinstalled()){   
  79.                     if (!$this->db->query ($thequery)){   
  80.                         $exceptionstring = "Error performing query: $thequery: <br />";   
  81.                         $exceptionstring .= $this->db->errno . ": " . $this->db->error;   
  82.                         throw new exception ($exceptionstring);   
  83.                     } else {   
  84.                         echo "Query performed correctly: " . $this->db->affected_rows . " row(s) affected.<br />";   
  85.                     }   
  86.                 //Mysql方式   
  87.                 } else {   
  88.                     if (!mysql_query ($thequery$this->db)){   
  89.                         $exceptionstring = "Error performing query: $thequery: <br />";   
  90.                         $exceptionstring .= mysql_errno() . ": " . mysql_error();   
  91.                         throw new exception ($exceptionstring);   
  92.                     } else {   
  93.                         echo "Query performed correctly: " . mysql_affected_rows () . " row(s) affected.<br />";   
  94.                     }   
  95.                 }   
  96.             } catch (exception $e) {   
  97.                 echo $e->getmessage();   
  98.             }   
  99.         }   
  100.            
  101.         //返回一个记录集   
  102.         public function getrows ($thequery){   
  103.             try {   
  104.                 //Mysqli方式.   
  105.                 if ($this->mysqliinstalled()){   
  106.                     if ($result = $this->db->query ($thequery)){   
  107.                         $returnarr = array ();   
  108.                         while ($adata = $result->fetch_array ()){   
  109.                             $returnarr = array_merge ($returnarr,$adata);   
  110.                         }   
  111.                         return $returnarr;   
  112.                     } else {   
  113.                         $exceptionstring = "Error performing query: $thequery: <br />";   
  114.                         $exceptionstring .= $this->db->errno . ": " . $this->db->error;   
  115.                         throw new exception ($exceptionstring);   
  116.                     }   
  117.                 //Mysql方式   
  118.                 } else {   
  119.                     if (!$aquery = mysql_query ($thequery)){   
  120.                         $exceptionstring = "Error performing query: $thequery: <br />";   
  121.                         $exceptionstring .= mysql_errno() . ": " . mysql_error();   
  122.                         throw new exception ($exceptionstring);   
  123.                     } else {   
  124.                         $returnarr = array ();   
  125.                         while ($adata = mysql_fetch_array ($aquery)){   
  126.                             $returnarr = array_merge ($returnarr,$adata);   
  127.                         }   
  128.                         return $returnarr;   
  129.                     }   
  130.                 }   
  131.             } catch (exception $e) {   
  132.                 echo $e->getmessage();   
  133.             }   
  134.         }   
  135.                    
  136.         //关闭当前数据库的连接   
  137.         public function __destruct() {   
  138.             try {   
  139.                 //Mysqli方式   
  140.                 if ($this->mysqliinstalled()){   
  141.                     if (!$this->db->close()){   
  142.                         $exceptionstring = "Error closing connection: <br />";   
  143.                         $exceptionstring .= $this->db->errno . ": " . $this->db->error;   
  144.                         throw new exception ($exceptionstring);   
  145.                     }   
  146.                 //Mysql方式   
  147.                 } else {   
  148.                     if (!mysql_close ($this->db)){   
  149.                         $exceptionstring = "Error closing connection: <br />";   
  150.                         $exceptionstring .= mysql_errno() . ": " . mysql_error();   
  151.                         throw new exception ($exceptionstring);   
  152.                     }   
  153.                 }   
  154.             } catch (exception $e) {   
  155.                 echo $e->getmessage();   
  156.             }   
  157.         }   
  158.            
  159.     }   
  160.     //创建一个连接实例   
  161.     $mydb = new DB_Class ("localhost","root","root");   
  162.     //选择一个数据库.   
  163.     $mydb->selectdb ("phpdev");   
  164.     //执行一个查询.   
  165.     $adata = $mydb->execute ("UPDATE symbols SET animal='Panda',cname='熊猫' WHERE country='China'");   
  166.     //或使用下列方法返一个一维数组.   
  167.     $adata = $mydb->getrows ("SELECT * FROM symbols ORDER BY id ASC");   
  168.     $i=1;   
  169.     for ($i = 1; $i < count ($adata); $i++){   
  170.         echo $adata[$i] . "<br />";   
  171.     }  

 

PS:如果您对本文有纠错、质疑、转载、举报等问题时,请加入到网站Q&Q&群:86783981(验证信息:91ctc.com)提交您的问题,让大伙一块讨论。谢谢您的支持,计算机教程中心网将会一如既往的提供优秀资源助您一臂之力!
关闭】【返回顶部

您可能感兴趣的文章
91ctc.com 网络先锋,引领科技,本站原创作品[转载请注明出处]。网站Q&Q&群:86783981(验证信息:91ctc.com)
Copyright© 2010-2017 计算机教程中心网 . All rights reserved. 苏ICP备11081842号