改造自discuz的MySQL查询类

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

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

【编辑推荐】

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

MySQL条件查询语句的用法

MySQL无重复查询的实现

五种常用的MySQL命令行

MySQL命令行乱码问题的解决

当前题目:改造自discuz的MySQL查询类
链接URL:http://www.shufengxianlan.com/qtweb/news44/355644.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联