改造自discuz的MySQL查询类

数据库 MySQL
MySQL中的查询类是我们在开发中经常会用到的,下文对改造自discuz的MySQL查询类作了详尽的阐述,供您参考。

MySQL查询类对于很多刚刚接触MySQL数据库的新人来说可能还比较陌生,下面就为您介绍改造自discuz的MySQL查询类,希望可以让您对MySQL查询类有更多的了解。

  1. <?php 
  2. /**  
  3. * mysql查询类  
  4. *  
  5. */  
  6. class dbQuery {  
  7. /**  
  8. * 查询总次数  
  9. *  
  10. * @var int  
  11. */  
  12. var $querynum = 0;  
  13. /**  
  14. * 连接句柄  
  15. *  
  16. * @var object  
  17. */  
  18. var $link;  
  19.  
  20. /**  
  21. * 构造函数  
  22. *  
  23. * @param string $dbhost 主机名  
  24. * @param string $dbuser 用户  
  25. * @param string $dbpw 密码  
  26. * @param string $dbname 数据库名  
  27. * @param int $pconnect 是否持续连接  
  28. */  
  29. function dbQuery($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0) {  
  30. if($pconnect) {  
  31. if(!$this->link = @mysql_pconnect($dbhost, $dbuser, $dbpw)) {  
  32. $this->halt('Can not connect to MySQL server');  
  33. }  
  34. } else {  
  35. if(!$this->link = @mysql_connect($dbhost, $dbuser, $dbpw)) {  
  36. $this->halt('Can not connect to MySQL server');  
  37. }  
  38. }  
  39. if($this->version() > '4.1') {  
  40. global $dbcharset;  
  41. if($dbcharset) {  
  42. mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this->link);  
  43. }  
  44. if($this->version() > '5.0.1') {  
  45. mysql_query("SET sql_mode=''", $this->link);  
  46. }  
  47. }  
  48. if($dbname) {  
  49. mysql_select_db($dbname, $this->link);  
  50. }  
  51. }  
  52. /**  
  53. * 选择数据库  
  54. *  
  55. * @param string $dbname  
  56. * @return   
  57. */  
  58. function select_db($dbname) {  
  59. return mysql_select_db($dbname, $this->link);  
  60. }  
  61. /**  
  62. * 取出结果集中一条记录  
  63. *  
  64. * @param object $query  
  65. * @param int $result_type  
  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. *  
  75. * @param string $sql  
  76. * @param string $type  
  77. * @return object  
  78. */  
  79. function query($sql, $type = '') {  
  80.  
  81. $func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query') ?  
  82. 'mysql_unbuffered_query' : 'mysql_query';  
  83. if(!($query = $func($sql, $this->link)) && $type != 'SILENT') {  
  84. $this->halt('MySQL Query Error', $sql);  
  85. }  
  86. $this->querynum++;  
  87. return $query;  
  88. }  
  89. /**  
  90. * 取影响条数  
  91. *  
  92. * @return int  
  93. */  
  94. function affected_rows() {  
  95. return mysql_affected_rows($this->link);  
  96. }  
  97. /**  
  98. * 返回错误信息  
  99. *  
  100. * @return array  
  101. */  
  102. function error() {  
  103. return (($this->link) ? mysql_error($this->link) : mysql_error());  
  104. }  
  105. /**  
  106. * 返回错误代码  
  107. *  
  108. * @return int  
  109. */  
  110. function errno() {  
  111. return intval(($this->link) ? mysql_errno($this->link) : mysql_errno());  
  112. }  
  113. /**  
  114. * 返回查询结果  
  115. *  
  116. * @param object $query  
  117. * @param string $row  
  118. * @return mixed  
  119. */  
  120. function result($query, $row) {  
  121. $query = @mysql_result($query, $row);  
  122. return $query;  
  123. }  
  124. /**  
  125. * 结果条数  
  126. *  
  127. * @param object $query  
  128. * @return int  
  129. */  
  130. function num_rows($query) {  
  131. $query = mysql_num_rows($query);  
  132. return $query;  
  133. }  
  134. /**  
  135. * 取字段总数  
  136. *  
  137. * @param object $query  
  138. * @return int  
  139. */  
  140. function num_fields($query) {  
  141. return mysql_num_fields($query);  
  142. }  
  143. /**  
  144. * 释放结果集  
  145. *  
  146. * @param object $query  
  147. * @return bool  
  148. */  
  149. function free_result($query) {  
  150. return mysql_free_result($query);  
  151. }  
  152. /**  
  153. * 返回自增ID  
  154. *  
  155. * @return int  
  156. */  
  157. function insert_id() {  
  158. return ($id = mysql_insert_id($this->link)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0);  
  159. }  
  160. /**  
  161. * 从结果集中取得一行作为枚举数组  
  162. *  
  163. * @param object $query  
  164. * @return array  
  165. */  
  166. function fetch_row($query) {  
  167. $query = mysql_fetch_row($query);  
  168. return $query;  
  169. }  
  170. /**  
  171. * 从结果集中取得列信息并作为对象返回  
  172. *  
  173. * @param object $query  
  174. * @return object  
  175. */  
  176. function fetch_fields($query) {  
  177. return mysql_fetch_field($query);  
  178. }  
  179. /**  
  180. * 返回mysql版本  
  181. *  
  182. * @return string  
  183. */  
  184. function version() {  
  185. return mysql_get_server_info($this->link);  
  186. }  
  187. /**  
  188. * 关闭连接  
  189. *  
  190. * @return bool  
  191. */  
  192. function close() {  
  193. return mysql_close($this->link);  
  194. }  
  195. /**  
  196. * 输出错误信息  
  197. *  
  198. * @param string $message  
  199. * @param string $sql  
  200. */  
  201. function halt($message = '', $sql = '') {  
  202. echo $message . ' ' . $sql;  
  203. exit;  
  204. }  
  205. }  
  206. ?>   
  207.  

 

 

 

【编辑推荐】

MySQL查询缓存变量的相关解释

MySQL条件查询语句的用法

MySQL无重复查询的实现

五种常用的MySQL命令行

MySQL命令行乱码问题的解决

责任编辑:段燃 来源: 互联网
相关推荐

2018-12-14 15:35:20

MySQL索引数据库

2023-12-26 01:09:28

MySQL存储释放锁

2010-11-22 10:29:42

MySQL字段自增长

2010-10-08 15:42:39

MySQL设置自增字段

2020-10-23 06:57:56

MySQLMaxwell代码

2011-07-07 13:21:26

DiscuzApacheMySQL

2023-09-07 13:34:00

云原生数据仓库

2011-03-23 17:19:07

LAMPDiscuz

2022-08-01 08:04:58

MySQL客户端字符

2010-10-08 10:18:26

MySQL自增字段

2010-05-31 11:34:00

MySQL自增字段

2010-11-12 10:38:24

SQL Server自

2021-05-31 19:50:04

MySQL自增锁InnoDB

2020-04-08 08:47:04

HBase场景组件

2010-11-25 14:21:16

MySQL查询分页

2010-11-22 15:56:34

Mysql多表查询

2010-10-14 14:28:03

Mysql多表查询

2022-12-06 09:00:11

MySQL自增主键查询

2010-07-19 21:52:35

2012-08-01 09:12:46

点赞
收藏

51CTO技术栈公众号