Bookmark and Share

Lee's 程序人生

HTML CSS Javascript XML AJAX ATLAS C# C++ 数据结构 软件工程 设计模式 asp.net Java 数字图象处理 Sql 数据库
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

改造自discuz的mysql查询类(带注释)

Posted on 2008-09-13 01:47  analyzer  阅读(481)  评论(0编辑  收藏  举报
  1<?php
  2/**
  3 * mysql查询类
  4 *
  5 */
  6class 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
 45            if($this->version() > '5.0.1') {
 46                mysql_query("SET sql_mode=''", $this->link);
 47            }
 48        }
 49
 50        if($dbname) {
 51            mysql_select_db($dbname, $this->link);
 52        }
 53
 54    }
 55    /**
 56     * 选择数据库
 57     *
 58     * @param string $dbname
 59     * @return 
 60     */
 61    function select_db($dbname) {
 62        return mysql_select_db($dbname, $this->link);
 63    }
 64    /**
 65     * 取出结果集中一条记录
 66     *
 67     * @param object $query
 68     * @param int $result_type
 69     * @return array
 70     */
 71    function fetch_array($query, $result_type = MYSQL_ASSOC) {
 72        return mysql_fetch_array($query, $result_type);
 73    }
 74    
 75    /**
 76     * 查询SQL
 77     *
 78     * @param string $sql
 79     * @param string $type
 80     * @return object
 81     */
 82    function query($sql, $type = '') {
 83        
 84        $func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query'?
 85            'mysql_unbuffered_query' : 'mysql_query';
 86        if(!($query = $func($sql, $this->link)) && $type != 'SILENT') {
 87            $this->halt('MySQL Query Error', $sql);
 88        }
 89
 90        $this->querynum++;
 91        return $query;
 92    }
 93    /**
 94     * 取影响条数
 95     *
 96     * @return int
 97     */
 98    function affected_rows() {
 99        return mysql_affected_rows($this->link);
100    }
101    /**
102     * 返回错误信息
103     *
104     * @return array
105     */
106    function error() {
107        return (($this->link) ? mysql_error($this->link) : mysql_error());
108    }
109    /**
110     * 返回错误代码
111     *
112     * @return int
113     */
114    function errno() {
115        return intval(($this->link) ? mysql_errno($this->link) : mysql_errno());
116    }
117    /**
118     * 返回查询结果
119     *
120     * @param object $query
121     * @param string $row
122     * @return mixed
123     */
124    function result($query, $row) {
125        $query = @mysql_result($query, $row);
126        return $query;
127    }
128    /**
129     * 结果条数
130     *
131     * @param object $query
132     * @return int
133     */
134    function num_rows($query) {
135        $query = mysql_num_rows($query);
136        return $query;
137    }
138    /**
139     * 取字段总数
140     *
141     * @param object $query
142     * @return int
143     */
144    function num_fields($query) {
145        return mysql_num_fields($query);
146    }
147    /**
148     * 释放结果集
149     *
150     * @param object $query
151     * @return bool
152     */
153    function free_result($query) {
154        return mysql_free_result($query);
155    }
156    /**
157     * 返回自增ID
158     *
159     * @return int
160     */
161    function insert_id() {
162        return ($id = mysql_insert_id($this->link)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0);
163    }
164    /**
165     * 从结果集中取得一行作为枚举数组
166     *
167     * @param object $query
168     * @return array
169     */
170    function fetch_row($query) {
171        $query = mysql_fetch_row($query);
172        return $query;
173    }
174    /**
175     * 从结果集中取得列信息并作为对象返回
176     *
177     * @param object $query
178     * @return object
179     */
180    function fetch_fields($query) {
181        return mysql_fetch_field($query);
182    }
183    /**
184     * 返回mysql版本
185     *
186     * @return string
187     */
188    function version() {
189        return mysql_get_server_info($this->link);
190    }
191    /**
192     * 关闭连接
193     *
194     * @return bool
195     */
196    function close() {
197        return mysql_close($this->link);
198    }
199    /**
200     * 输出错误信息
201     *
202     * @param string $message
203     * @param string $sql
204     */
205    function halt($message = '', $sql = '') {
206        echo $message . ' ' . $sql;
207        exit;
208
209    }
210}
211
212?>
我要啦免费统计