php数据库操作类
<?php002Class 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]