大佬教程收集整理的这篇文章主要介绍了UCHome中数据库操作类(class_mysql.php)页面的代码分析,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
概述
UCHome的数据库操作类,相对来说还是比较容易让人理解的 代码 1 <?
php 2 /* 3 [UCenter Home] (
C) 2007-2008 Comsenz Inc. 4 $Id: class_mysq
l.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 db
stuff
{ 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@R_305_
3816@ connect($dbhost, $dbuser, $dbpw, $dbname =
'', $pconnect = 0, $halt = TRU
E) { 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($db
Name) { 50
@mysql_
SELEct_db($dbname, $this->link
); 51 } 52 } 53 /
** 54 * 选择数据库 55 * @param
String $dbname 数据库名 56 * @return bool 57 */ 58@R_305_
3816@
SELEct_db($db
Name) { 59
return mysql_
SELEct_db($dbname, $this->link
); 60 } 61 62 /
** 63 * 获取查询的数组 64 * @param ob
ject $query 65 * @param
String $result_type MYSQL_ASSOC 只得到关联索引,MYSQL_NUM 只得到数字索引 66 * @return
array 67 */ 68@R_305_
3816@ fetch_array($query, $result_type = MYSQL_ASSO
C) { 69
return mysql_fetch_array($query, $result_typ
E); 70 } 71 72 /
** 73 * 执行一条
sql语句 74 * @param
String $sql 要执行的
sql语句 75 * @param
String $type 如果$type为UNBUFFERED:则执行mysql_unbuffered_query(
);他与mysql_query的区别是,执行后不获取和缓存结果的行 76 * @return ob
ject 77 */ 78@R_305_
3816@ 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
'R_510_11845@ysql_unbuffered_query' :
'R_510_11845@ysql_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 - $sqlstarttim
E), 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数加1104
return $query;105 }106 /
**107 * 取得前一次 MySQL 操作所影响的记录行数108 * @return int109 */110@R_305_
3816@ affected_rows()
{111
return mysql_affected_rows($this->link
);112 }113 /
**114 * 返回上一个 MySQL 操作产生的文本错误信息115 * @return
String116 */117@R_305_
3816@ error()
{118
return (($this->link) ? mysql_error($this->link) : mysql_error()
);119 }120 /
**121 * 返回上一个 MySQL 操作中的错误信息的数字编码122 * @return int123 */124@R_305_
3816@ errno()
{125
return intval(($this->link) ? mysql_errno($this->link) : mysql_errno()
);126 }127 /
**128 * 取指定的结果集129 * @param ob
ject $query130 * @param int $row131 * @return
String132 */133@R_305_
3816@
result($query, $row)
{134 $query =
@mysql_result($query, $row
);135
return $query;136 }137 /
**138 * 取得结果集的行数139 * @param ob
ject $query140 * @return int141 */142@R_305_
3816@ num_rows($query)
{143 $query = mysql_num_rows($query
);144
return $query;145 }146 /
**147 * 取得字段数148 * @param ob
ject $query149 * @return int150 */151@R_305_
3816@ num_fields($query)
{152
return mysql_num_fields($query
);153 }154 /
**155 * 释放结果内存156 * @param ob
ject $query157 * @return bool158 */159@R_305_
3816@ free_result($query)
{160
return mysql_free_result($query
);161 }162 /
**163 * 取得上一步 INSERT 操作产生的 ID164 * @return int165 */166@R_305_
3816@ 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 ob
ject $query172 * @return
array173 */174@R_305_
3816@ fetch_row($query)
{175 $query = mysql_fetch_row($query
);176
return $query;177 }178 /
**179 * 从结果集中取得列信息180 * @param ob
ject $query181 * @ret
大佬总结
以上是大佬教程为你收集整理的UCHome中数据库操作类(class_mysql.php)页面的代码分析全部内容,希望文章能够帮你解决UCHome中数据库操作类(class_mysql.php)页面的代码分析所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。