一个自认为不错的php mysql 类,由discuz的mysql类整理而来的~
<?php /** * 数据库类 * @filesource cls_mysql.php * @author 孙广锋 * @version 孙广锋 20100204,1110 */ class MysqlDb{ var version = ''; varquerynum = 0; var link; /** * 注销实例 * */ function __destruct(){this->close(); } /** * 连接数据库 * * @param string dbhost 数据库主机地址 * @param stringdbuser 数据库用户名 * @param string dbpw 数据库密码 * @param stringdbname 数据库名称 * @param boolean pconnect 是否开启持久连接 * @param booleanhalt 是否开启出错停止执行 */ function connect(dbhost,dbuser, dbpw,dbname = '', pconnect = 0,halt = TRUE) { func = empty(pconnect) ? 'mysql_connect' : 'mysql_pconnect'; if(!this->link = @func(dbhost,dbuser, dbpw)){halt && this->halt('Can not connect to MySQL server'); }else{ if(this->version() > '4.1'){ global charset,dbcharset; dbcharset = !dbcharset && in_array(strtolower(charset), array('gbk', 'big5', 'utf-8')) ? str_replace('-', '',charset) : dbcharset;serverset = dbcharset ? 'character_set_connection='.dbcharset.', character_set_results='.dbcharset.', character_set_client=binary' : '';serverset .= this->version()>'5.0.1' ? ((empty(serverset) ? '' : ',').'sql_mode=\'\'') : ''; serverset && mysql_query("SETserverset", this->link); }dbname && @mysql_select_db(dbname,this->link); } } /** * 切换选择数据库 * * @param string dbname 数据库名称 * @return boolean */ function select_db(dbname) { return mysql_select_db(dbname,this->link); } /** * 执行查询,返回查询集资源 * * @param string sql SQL语句 * @param stringtype 执行类型 * @return resource/boolean */ function query(sql,type = '') { func =type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query') ? 'mysql_unbuffered_query' : 'mysql_query'; if(!(query =func(sql,this->link))) { if(in_array(this->errno(), array(2006, 2013)) && substr(type, 0, 5) != 'RETRY') { this->halt('Can not connect to MySQL server'); } elseif(type != 'SILENT' && substr(type, 5) != 'SILENT'){this->halt('MySQL Query Error', sql); } }this->querynum++; return query; } /** * * 根据查询获得结果集(以堆栈方式弹出第1条) * @param resourcequery * @param unknown_type result_type * @return array */ function fetch_array(query, result_type = MYSQL_ASSOC) { return mysql_fetch_array(query, result_type); } /** * 查询第1条数据 * * @param stringsql SQL语句 * @return array */ function fetch_first(sql) { returnthis->fetch_array(this->query(sql)); } /** * 函数从查询集中取得一行作为数字数组 * * @param resource query * @return array */ function fetch_row(query) { query = mysql_fetch_row(query); return query; } /** * 函数从结果集中取得列信息并作为对象返回。 * * @param resourcequery * @return array */ function fetch_fields(query) { return mysql_fetch_field(query); } /** * 根据查集获得指定行记录值 * * @param resource query 查询结 * @param introw 行号 * @return string */ function result(query,row) { query = @mysql_result(query, row); returnquery; } /** * 根据SQL语句查询第1行第1列值 * * @param string sql SQL语句 * @return string */ function result_first(sql) { return this->result(this->query(sql), 0); } /** * 根据查询集获得记录总数 * * @param resourcequery * @return int */ function num_rows(query) {query = mysql_num_rows(query); returnquery; } /** * 根据查询集获得字段数 * * @param resource query 查询集 * @return int */ function num_fields(query) { return mysql_num_fields(query); } /** * 释放查询 * * @param resourcequery 查询集 * @return boolean */ function free_result(query) { return mysql_free_result(query); } /** * 函数返回前一次操作所影响的记录行数。 * * @return int */ function affected_rows() { return mysql_affected_rows(this->link); } /** * 获得最后一次插入的自动编号 * * @return int */ function insert_id() { return (id = mysql_insert_id(this->link)) >= 0 ?id : this->result(this->query("SELECT last_insert_id()"), 0); } /** * 获得错误号 * * @return int */ function errno() { return intval((this->link) ? mysql_errno(this->link) : mysql_errno()); } /** * 返回MYSQL错误 * * @return string */ function error() { return ((this->link) ? mysql_error(this->link) : mysql_error()); } /** * 错误输出函数 * * @param string message 错误提示消息 * @param stringsql 错误提示SQL语句 */ function halt(message = '',sql = '') { echo 'SQL Error:<br />'.message.'<br />'.sql; } /** * 获取当前Mysql版本号 * * @return float */ function version() { if(empty(this->version)) {this->version = mysql_get_server_info(this->link); } returnthis->version; } /** * 释放连接 * * @return boolean */ function close() { return mysql_close(this->link); } /** * 资源文件转为数据集合 * * @param resourcequery 查询资源文件 * @param string key_field 返回数组key所在字段 * @return array */ function fetch_all(query,key_field=''){list = array(); while (temp =this->fetch_array(query)) { (key_field=='' || !isset(temp[key_field])) ? array_push(list,temp) : list[temp[key_field]] =temp ; } return $list; } } ?>