玥殇 发表于 2015-8-24 15:00:26

php数据库操作类

<?php
002Class 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



view source
/js/syntax-highlighter-2.1.382/scripts/clipboard.swfprint?

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?>
页: [1]
查看完整版本: php数据库操作类