php数据库操作类

<?php
002 Class DB {
003   
004     private $link_id;
005     private $handle;
006     private $is_log;
007     private $time;
008   
009     //构造函数
010     public function __construct() {
011         $this->time = $this->microtime_float();
012         require_once("config.db.php");
013         $this->connect($db_config["hostname"], $db_config["username"], $db_config["password"], $db_config["database"], $db_config["pconnect"]);
014         $this->is_log = $db_config["log"];
015         if($this->is_log){
016             $handle = fopen($db_config["logfilepath"]."dblog.txt", "a+");
017             $this->handle=$handle;
018         }
019     }
020       
021     //数据库连接
022     public function connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect = 0,$charset='utf8') {
023         if( $pconnect==0 ) {
024             $this->link_id = @mysql_connect($dbhost, $dbuser, $dbpw, true);
025             if(!$this->link_id){
026                 $this->halt("数据库连接失败");
027             }
028         } else {
029             $this->link_id = @mysql_pconnect($dbhost, $dbuser, $dbpw);
030             if(!$this->link_id){
031                 $this->halt("数据库持久连接失败");
032             }
033         }
034         if(!@mysql_select_db($dbname,$this->link_id)) {
035             $this->halt('数据库选择失败');
036         }
037         @mysql_query("set names ".$charset);
038     }
039       
040     //查询 
041     public function query($sql) {
042         $this->write_log("查询 ".$sql);
043         $query = mysql_query($sql,$this->link_id);
044         if(!$query) $this->halt('Query Error: ' . $sql);
045         return $query;
046     }
047       
048     //获取一条记录(MYSQL_ASSOC,MYSQL_NUM,MYSQL_BOTH)              
049     public function get_one($sql,$result_type = MYSQL_ASSOC) {
050         $query = $this->query($sql);
051         $rt =& mysql_fetch_array($query,$result_type);
052         $this->write_log("获取一条记录 ".$sql);
053         return $rt;
054     }
055   
056     //获取全部记录
057     public function get_all($sql,$result_type = MYSQL_ASSOC) {
058         $query = $this->query($sql);
059         $i = 0;
060         $rt = array();
061         while($row =& mysql_fetch_array($query,$result_type)) {
062             $rt[$i]=$row;
063             $i++;
064         }
065         $this->write_log("获取全部记录 ".$sql);
066         return $rt;
067     }
068       
069     //插入
070     public function insert($table,$dataArray) {
071         $field = "";
072         $value = "";
073         if( !is_array($dataArray) || count($dataArray)<=0) {
074             $this->halt('没有要插入的数据');
075             return false;
076         }
077         while(list($key,$val)=each($dataArray)) {
078             $field .="$key,";
079             $value .="'$val',";
080         }
081         $field = substr( $field,0,-1);
082         $value = substr( $value,0,-1);
083         $sql = "insert into $table($field) values($value)";
084         $this->write_log("插入 ".$sql);
085         if(!$this->query($sql)) return false;
086         return true;
087     }
088   
089     //更新
090     public function update( $table,$dataArray,$condition="") {
091         if( !is_array($dataArray) || count($dataArray)<=0) {
092             $this->halt('没有要更新的数据');
093             return false;
094         }
095         $value = "";
096         while( list($key,$val) = each($dataArray))
097         $value .= "$key = '$val',";
098         $value .= substr( $value,0,-1);
099         $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         if( empty($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         }
181     }
182       
183     //获取毫秒数
184     public function microtime_float() {
185         list($usec, $sec) = explode(" ", microtime());
186         return ((float)$usec + (float)$sec);
187     }
188 }
189   
190 ?>

[代码] config.db.php

01 <?php 
02     $db_config["hostname"] = "localhost"; //服务器地址
03     $db_config["username"] = "root"; //数据库用户名
04     $db_config["password"] = "123"; //数据库密码
05     $db_config["database"] = "test"; //数据库名称
06     $db_config["charset"] = "utf8";//数据库编码
07     $db_config["pconnect"] = 1;//开启持久连接
08     $db_config["log"] = 1;//开启日志
09     $db_config["logfilepath"] = './';//开启日志
10 ?>
posted @ 2011-10-17 17:23  Falling Leaves  阅读(4512)  评论(2编辑  收藏  举报