在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
UCHome的数据库操作类,相对来说还是比较容易让人理解的
代码
1 <?php 2 /* 3 [UCenter Home] (C) 2007-2008 Comsenz Inc. 4 $Id: class_mysql.php 2009-10-22 1:15:00 5 @author ymaozi 6 @copyright http://www.codedesign.cn 7 @uchome源码交流QQ群:83400263 8 */ 9 10 if(!defined('IN_UCHOME')) { 11 exit('Access Denied'); 12 } 13 14 class dbstuff { 15 var $querynum = 0; 16 var $link; 17 var $charset; 18 19 /** 20 * 建立数据库连接 21 * @param string $dbhost 22 * @param string $dbuser 23 * @param string $dbpw 24 * @param string $dbname 25 * @param int $pconnect 26 * @param bool $halt 27 */ 28 function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $halt = TRUE) { 29 if($pconnect) {//是否采用了持久连接, 30 if(!$this->link = @mysql_pconnect($dbhost, $dbuser, $dbpw)) {//建立永久连接,永久连接不能通过mysql_close关闭 31 $halt && $this->halt('Can not connect to MySQL server'); 32 } 33 } else { 34 if(!$this->link = @mysql_connect($dbhost, $dbuser, $dbpw, 1)) {//建立数据库连接 35 $halt && $this->halt('Can not connect to MySQL server'); 36 } 37 } 38 39 <span id="more-106"></span> 40 41 if($this->version() > '4.1') { 42 if($this->charset) { 43 @mysql_query("SET character_set_connection=$this->charset, character_set_results=$this->charset, character_set_client=binary", $this->link); 44 } 45 if($this->version() > '5.0.1') { 46 @mysql_query("SET sql_mode=''", $this->link); 47 } 48 } 49 if($dbname) { 50 @mysql_select_db($dbname, $this->link); 51 } 52 } 53 /** 54 * 选择数据库 55 * @param string $dbname 数据库名 56 * @return bool 57 */ 58 function select_db($dbname) { 59 return mysql_select_db($dbname, $this->link); 60 } 61 62 /** 63 * 获取查询的数组 64 * @param object $query 65 * @param string $result_type MYSQL_ASSOC 只得到关联索引,MYSQL_NUM 只得到数字索引 66 * @return array 67 */ 68 function fetch_array($query, $result_type = MYSQL_ASSOC) { 69 return mysql_fetch_array($query, $result_type); 70 } 71 72 /** 73 * 执行一条sql语句 74 * @param string $sql 要执行的sql语句 75 * @param string $type 如果$type为UNBUFFERED:则执行mysql_unbuffered_query();他与mysql_query的区别是,执行后不获取和缓存结果的行 76 * @return object 77 */ 78 function query($sql, $type = '') { 79 if(D_BUG) { 80 global $_SGLOBAL; 81 $sqlstarttime = $sqlendttime = 0; //sql开始时间与结束时间 82 $mtime = explode(' ', microtime()); 83 $sqlstarttime = number_format(($mtime[1] + $mtime[0] - $_SGLOBAL['supe_starttime']), 6) * 1000; 84 } 85 //如果定义$type='UNBUFFERED' 则执行mysql_unbuffered_query()函数 86 $func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query') ? 87 'mysql_unbuffered_query' : 'mysql_query'; 88 if(!($query = $func($sql, $this->link)) && $type != 'SILENT') { 89 $this->halt('MySQL Query Error', $sql); 90 } 91 if(D_BUG) { 92 $mtime = explode(' ', microtime()); 93 $sqlendttime = number_format(($mtime[1] + $mtime[0] - $_SGLOBAL['supe_starttime']), 6) * 1000; 94 $sqltime = round(($sqlendttime - $sqlstarttime), 3);//获取php的结束时间 95 96 $explain = array(); 97 $info = mysql_info();//取得最近一条查询的信息 98 if($query && preg_match("/^(select )/i", $sql)) { 99 $explain = mysql_fetch_assoc(mysql_query('EXPLAIN '.$sql, $this->link)); 100 } 101 $_SGLOBAL['debug_query'][] = array('sql'=>$sql, 'time'=>$sqltime, 'info'=>$info, 'explain'=>$explain); 102 } 103 $this->querynum++; //将执行的query数加1 104 return $query; 105 } 106 /** 107 * 取得前一次 MySQL 操作所影响的记录行数 108 * @return int 109 */ 110 function affected_rows() { 111 return mysql_affected_rows($this->link); 112 } 113 /** 114 * 返回上一个 MySQL 操作产生的文本错误信息 115 * @return string 116 */ 117 function error() { 118 return (($this->link) ? mysql_error($this->link) : mysql_error()); 119 } 120 /** 121 * 返回上一个 MySQL 操作中的错误信息的数字编码 122 * @return int 123 */ 124 function errno() { 125 return intval(($this->link) ? mysql_errno($this->link) : mysql_errno()); 126 } 127 /** 128 * 取指定的结果集 129 * @param object $query 130 * @param int $row 131 * @return string 132 */ 133 function result($query, $row) { 134 $query = @mysql_result($query, $row); 135 return $query; 136 } 137 /** 138 * 取得结果集的行数 139 * @param object $query 140 * @return int 141 */ 142 function num_rows($query) { 143 $query = mysql_num_rows($query); 144 return $query; 145 } 146 /** 147 * 取得字段数 148 * @param object $query 149 * @return int 150 */ 151 function num_fields($query) { 152 return mysql_num_fields($query); 153 } 154 /** 155 * 释放结果内存 156 * @param object $query 157 * @return bool 158 */ 159 function free_result($query) { 160 return mysql_free_result($query); 161 } 162 /** 163 * 取得上一步 INSERT 操作产生的 ID 164 * @return int 165 */ 166 function insert_id() { 167 return ($id = mysql_insert_id($this->link)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0); 168 } 169 /** 170 * 从查询语句中取一条记录 171 * @param object $query 172 * @return array 173 */ 174 function fetch_row($query) { 175 $query = mysql_fetch_row($query); 176 return $query; 177 } 178 /** 179 * 从结果集中取得列信息 180 * @param object $query 181 * @return object 182 */ 183 function fetch_fields($query) { 184 return mysql_fetch_field($query); 185 } 186 /** 187 * 取得 MySQL 服务器信息 188 * @return string 189 */ 190 function version() { 191 return mysql_get_server_info($this->link); 192 } 193 /** 194 * 关闭 MySQL 连接 195 * @return bool 196 */ 197 function close() { 198 return mysql_close($this->link); 199 } 200 /** 201 * 执行错误时,弹出的信息窗口 202 * @param string $message 203 * @param string $sql 204 */ 205 function halt($message = '', $sql = '') { 206 |
2022-08-17
2022-11-06
2022-07-29
2022-08-18
2022-08-13
请发表评论