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

PHP操作数据库的Class/类

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-10 14:04:02 浏览: 评论:0 

下面一个自己开发应用中会常用到的一款数据库操作类代码,下面有两个文件一个是配置文件一个是操作数据库类,最后简单的列举了这个例类的调用方法.

配置文件config.db.php,代码如下:

  1. <?php 
  2.     $db_config["hostname"] = "localhost"//服务器地址 
  3.     $db_config["username"] = "root"//数据库用户名 
  4.     $db_config["password"] = "123"//数据库密码 
  5.     $db_config["database"] = "test"//数据库名称 
  6.     $db_config["charset"] = "utf8";//数据库编码 
  7.     $db_config["pconnect"] = 1;//开启持久连接 
  8.     $db_config["log"] = 1;//开启日志 
  9.     $db_config["logfilepath"] = './';//开启日志 
  10. ?> 

数据库操作类,代码如下:

  1. <!--?php 
  2. Class DB { 
  3.    
  4.     private $link_id
  5.     private $handle
  6.     private $is_log
  7.     private $time
  8.    
  9.     //构造函数 
  10.     public function __construct() { 
  11.         $this--->time = $this->microtime_float(); 
  12.         require_once("config.db.php"); 
  13.         $this->connect($db_config["hostname"], $db_config["username"], $db_config["password"], $db_config["database"], $db_config["pconnect"]); 
  14.         $this->is_log = $db_config["log"]; 
  15.         if($this->is_log){ 
  16.             $handle = fopen($db_config["logfilepath"]."dblog.txt""a+"); 
  17.             $this->handle=$handle
  18.         } 
  19.     } 
  20.        
  21.     //数据库连接 
  22.     public function connect($dbhost$dbuser$dbpw$dbname$pconnect = 0,$charset='utf8') { 
  23.         if$pconnect==0 ) { 
  24.             $this->link_id = @mysql_connect($dbhost$dbuser$dbpw, true); 
  25.             if(!$this->link_id){ 
  26.                 $this->halt("数据库连接失败"); 
  27.             } 
  28.         } else { 
  29.             $this->link_id = @mysql_pconnect($dbhost$dbuser$dbpw); 
  30.             if(!$this->link_id){ 
  31.                 $this->halt("数据库持久连接失败"); 
  32.             } 
  33.         } 
  34.         if(select_db($dbname,$this-%3Elink_id">!@mysql_select_db($dbname,$this->link_id)) { 
  35.             $this->halt('数据库选择失败'); 
  36.         } 
  37.         @mysql_query("set names ".$charset); 
  38.     } 
  39.        
  40.     //查询 
  41.     public function query($sql) { 
  42.         $this->write_log("查询 ".$sql); 
  43.         $query = mysql_query($sql,$this->link_id); 
  44.         if(!$query$this->halt('Query Error: ' . $sql); 
  45.         return $query
  46.     } 
  47.        
  48.     //获取一条记录(MYSQL_ASSOC,MYSQL_NUM,MYSQL_BOTH)             
  49.     public function get_one($sql,$result_type = MYSQL_ASSOC) { 
  50.         $query = $this->query($sql); 
  51.         $rt =& mysql_fetch_array($query,$result_type); 
  52.         $this->write_log("获取一条记录 ".$sql); 
  53.         return $rt
  54.     } 
  55.    
  56.     //获取全部记录 
  57.     public function get_all($sql,$result_type = MYSQL_ASSOC) { 
  58.         $query = $this->query($sql); 
  59.         $i = 0; 
  60.         $rt = array(); 
  61.         while($row =& mysql_fetch_array($query,$result_type)) { 
  62.             $rt[$i]=$row
  63.             $i++; 
  64.         } 
  65.         $this->write_log("获取全部记录 ".$sql); 
  66.         return $rt
  67.     } 
  68.        
  69.     //插入 
  70.     public function insert($table,$dataArray) { 
  71.         $field = ""
  72.         $value = ""
  73.         if( !is_array($dataArray) || count($dataArray)<=0) { 
  74.             $this->halt('没有要插入的数据'); 
  75.             return false; 
  76.         } 
  77.         while(list($key,$val)=each($dataArray)) { 
  78.             $field .="$key,"
  79.             $value .="'$val',"
  80.         } 
  81.         $field = substr$field,0,-1); 
  82.         $value = substr$value,0,-1); 
  83.         $sql = "insert into $table($field) values($value)"
  84.         $this->write_log("插入 ".$sql); 
  85.         if(!$this->query($sql)) return false; 
  86.         return true; 
  87.     } 
  88.    
  89.     //更新 
  90.     public function update( $table,$dataArray,$condition="") { 
  91.         if( !is_array($dataArray) || count($dataArray)<=0) { 
  92.             $this->halt('没有要更新的数据'); 
  93.             return false; 
  94.         } 
  95.         $value = ""
  96.         while( list($key,$val) = each($dataArray)) 
  97.         $value .= "$key = '$val',"
  98.         $value .= substr$value,0,-1); 
  99.         $sql = "update $table set $value where 1=1 and $condition"
  100.         $this->write_log("更新 ".$sql); 
  101.         if(!$this->query($sql)) return false; 
  102.         return true; 
  103.     } 
  104.    
  105.     //删除 
  106.     public function delete$table,$condition="") { 
  107.         ifemptyempty($condition) ) { 
  108.             $this->halt('没有设置删除的条件'); 
  109.             return false; 
  110.         } 
  111.         $sql = "delete from $table where 1=1 and $condition"
  112.         $this->write_log("删除 ".$sql); 
  113.         if(!$this->query($sql)) return false; 
  114.         return true; 
  115.     } 
  116.    
  117.     //返回结果集 
  118.     public function fetch_array($query$result_type = MYSQL_ASSOC){ 
  119.         $this->write_log("返回结果集"); 
  120.         return mysql_fetch_array($query$result_type); 
  121.     } 
  122.    
  123.     //获取记录条数 
  124.     public function num_rows($results) { 
  125.         if(!is_bool($results)) { 
  126.             $num = mysql_num_rows($results); 
  127.             $this->write_log("获取的记录条数为".$num); 
  128.             return $num
  129.         } else { 
  130.             return 0; 
  131.         } 
  132.     } 
  133.    
  134.     //释放结果集 
  135.     public function free_result() { 
  136.         $void = func_get_args(); 
  137.         foreach($void as $query) { 
  138.             if(is_resource($query) && get_resource_type($query) === 'mysql result') { 
  139.                 return mysql_free_result($query); 
  140.             } 
  141.         } 
  142.         $this->write_log("释放结果集"); 
  143.     } 
  144.    
  145.     //获取最后插入的id 
  146.     public function insert_id() { 
  147.         $id = mysql_insert_id($this->link_id); 
  148.         $this->write_log("最后插入的id为".$id); 
  149.         return $id
  150.     } 
  151.    
  152.     //关闭数据库连接 
  153.     protected function close() { 
  154.         $this->write_log("已关闭数据库连接"); 
  155.         return @mysql_close($this->link_id); 
  156.     } 
  157.    
  158.     //错误提示 
  159.     private function halt($msg='') { 
  160.         $msg .= "\r\n".mysql_error(); 
  161.         $this->write_log($msg); 
  162.         die($msg); 
  163.     } 
  164.    
  165.     //析构函数 
  166.     public function __destruct() { 
  167.         $this->free_result(); 
  168.         $use_time = ($this-> microtime_float())-($this->time); 
  169.         $this->write_log("完成整个查询任务,所用时间为".$use_time); 
  170.         if($this->is_log){ 
  171.             fclose($this->handle); 
  172.         } 
  173.     } 
  174.        
  175.     //写入日志文件 
  176.     public function write_log($msg=''){ 
  177.         if($this->is_log){ 
  178.             $text = date("Y-m-d H:i:s")." ".$msg."\r\n"
  179.             fwrite($this->handle,$text); 
  180.         } //开源软件:phpfensi.com 
  181.     } 
  182.        
  183.     //获取毫秒数 
  184.     public function microtime_float() { 
  185.         list($usec$sec) = explode(" ", microtime()); 
  186.         return ((float)$usec + (float)$sec); 
  187.     } 
  188.    
  189. ?> 

使用方法,代码如下:

  1. $db = new DB(); 
  2. //调用 
  3. $db->insert_id();//获取最新IP地址

Tags: PHP操作数据库 Class类

分享到: