给我讲解一下 DZ6.0论坛(Discuz_6_SC_GBK) 里面的数据库操作类db_mysql.class.php个函数功能及用法详解
/*
[Discuz!] (C)2001-2007 Comsenz Inc.
This is NOT a freeware, use is subject to license terms
$Id: db_mysql.class.php 10123 2007-08-24 01:40:08Z cnteacher $
*/
// php使用defined()来防止外部直接访问php文件,从而保证了只让内部php文件include等调用
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
class dbstuff {
var $querynum = 0; // 执行数?
var $link; // 连接
/*
* 函数名 : connect
* 功 能 : 数据库连接
* 参 数 : 数据库地址 用户名 密码 数据库名
* 备 注 : $pconnect = 0; // 数据库持久连接 0=关闭, 1=打开
*/
function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $halt = TRUE) {
if($pconnect) {
if(!$this->link = @mysql_pconnect($dbhost, $dbuser, $dbpw)) {
$halt && $this->halt('Can not connect to MySQL server'); // halt 是函数 下面
}
} else {
if(!$this->link = @mysql_connect($dbhost, $dbuser, $dbpw, 1)) {
$halt && $this->halt('Can not connect to MySQL server');
}
}
// 判断版本 version() 底部写了此函数 如果是php 4.1
if($this->version() > '4.1') {
global $charset, $dbcharset; // 设置全局变量
if(!$dbcharset && in_array(strtolower($charset), array('gbk', 'big5', 'utf-8'))) {
$dbcharset = str_replace('-', '', $charset);
}
if($dbcharset) {
@mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this->link);
}
// 判断版本 version() 底部写了此函数 如果是php 5.0.1
if($this->version() > '5.0.1') {
@mysql_query("SET sql_mode=''", $this->link);
}
}
if($dbname) {
@mysql_select_db($dbname, $this->link);
}
}
/*
* 函数名 : select_db
* 功 能 : 选择数据库
* 参 数 : $dbname 数控名
* 备 注 :
*/
function select_db($dbname) {
return mysql_select_db($dbname, $this->link);
}
/*
* 函数名 : fetch_array
* 功 能 : 执行sql语句
* 参 数 : $sql 语句 type 类型
* 备 注 :
*/
function fetch_array($query, $result_type = MYSQL_ASSOC) {
return mysql_fetch_array($query, $result_type);
}
/*
* 函数名 : query
* 功 能 : 执行sql语句
* 参 数 : $sql 语句 type 类型
* 备 注 :
*/
function query($sql, $type = '') {
global $debug, $discuz_starttime, $sqldebug, $sqlspenttimes;
$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->close();
require DISCUZ_ROOT.'./config.inc.php';
$this->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect);
$this->query($sql, 'RETRY'.$type);
} elseif($type != 'SILENT' && substr($type, 5) != 'SILENT') {
$this->halt('MySQL Query Error', $sql);
}
}
$this->querynum++;
return $query;
}
/*
* 函数名 : affected_rows
* 功 能 : 报错
* 参 数 :
* 备 注 :
*/
function affected_rows() {
return mysql_affected_rows($this->link);
}
/*
* 函数名 : error
* 功 能 : 报错
* 参 数 :
* 备 注 :
*/
function error() {
return (($this->link) ? mysql_error($this->link) : mysql_error());
}
/*
* 函数名 : errno
* 功 能 : 报错
* 参 数 :
* 备 注 :
*/
function errno() {
return intval(($this->link) ? mysql_errno($this->link) : mysql_errno());
}
/*
* 函数名 : result
* 功 能 :
* 参 数 :
* 备 注 :
*/
function result($query, $row) {
$query = @mysql_result($query, $row);
return $query;
}
/*
* 函数名 : num_rows
* 功 能 :
* 参 数 :
* 备 注 :
*/
function num_rows($query) {
$query = mysql_num_rows($query);
return $query;
}
/*
* 函数名 : num_fields
* 功 能 : 释放
* 参 数 :
* 备 注 :
*/
function num_fields($query) {
return mysql_num_fields($query);
}
/*
* 函数名 : free_result
* 功 能 : 释放
* 参 数 :
* 备 注 :
*/
function free_result($query) {
return mysql_free_result($query);
}
/*
* 函数名 : insert_id
* 功 能 : 关闭连接
* 参 数 : 无需参数
* 备 注 :
*/
function insert_id() {
return ($id = mysql_insert_id($this->link)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0);
}
/*
* 函数名 : fetch_row
* 功 能 :
* 参 数 :
* 备 注 :
*/
function fetch_row($query) {
$query = mysql_fetch_row($query);
return $query;
}
/*
* 函数名 : fetch_fields
* 功 能 : 关闭连接
* 参 数 : 无需参数
* 备 注 :
*/
function fetch_fields($query) {
return mysql_fetch_field($query);
}
/*
* 函数名 : version
* 功 能 : 判断版本
* 参 数 : 无需参数
* 备 注 :
*/
function version() {
return mysql_get_server_info($this->link);
}
/*
* 函数名 : close
* 功 能 : 关闭数据库连接
* 参 数 : 无需参数
* 备 注 :
*/
function close() {
return mysql_close($this->link);
}
/*
* 函数名 : halt
* 功 能 :
* 参 数 :
* 备 注 :
*/
function halt($message = '', $sql = '') {
define('CACHE_FORBIDDEN', TRUE);
require_once DISCUZ_ROOT.'./include/db_mysql_error.inc.php';
}
}
?>
希望高手给我把函数及用法讲解详细点 高分重谢! 谢谢
相关推荐
Discuz! X2.5GBK:全面的开源中文社区论坛解决方案
本文还有配套的精品资源,点击获取 简介:Discuz! X2.5GBK是一款广泛应用于中文环境的开源社区论坛软件,提供包括发帖、回帖、主题分类等丰富功能和GBK编码支持,以确保中文显示和操作的顺畅。它允许用户通过简单的安装指南快速搭建论坛,并支持大量插件、模板的定制化需求。此外,Discuz! X2.5GBK还提供了文件上传管理、日常维护工具、SEO优化功能,并拥有一个活跃...
UC1.5_UCH2.0_DZ7.2_SC_GBK.zip部署指南:老社区站恢复全流程
在社区网站搭建中,如何将论坛、个人空间与统一账号体系高效整合,是许多站长关注的核心问题。UCenter作为用户中心,负责统一管理登录与用户数据,Discuz!论坛与UCenter Home则在此基础上提供内容沉淀与社交互动,形成一套完整的社区解决方案。基于GBK编码环境,该组合对PHP、MySQL版本与数据库字符集有严格要求,需选用PHP 5.2/5.3及MySQL 5.5等老版本环境才能稳定运行。无论是恢复十年前的站,还是迁移数据,掌握正确的安装顺序与编码处理都是关键。从解压老压缩包、配置通信密钥、规避乱
Discuz! X3.5 SC-UTF8安装部署与GBK转UTF8编码迁移实战
在互联网应用开发中,字符编码是数据存储与交互的基础。UTF-8作为国际通用编码,能完整支持多语言与特殊字符,已成为现代Web应用的标准选择,而数据库字符集配置不当则常常引发乱码问题。对于使用Discuz! X3.5这类社区论坛系统的站长而言,理解从GBK到UTF-8的迁移原理、掌握MySQL字符集设置以及PHP环境调优技术,是保障论坛稳定运行的关键。SC-UTF8官方安装包提供了标准化部署路径,但在实际操作中,老旧数据导入常出现invalid byte sequence等编码错误。本文围绕Discuz! X
Discuz X3.5 SC UTF8安装部署实战:环境配置、GBK转码与报错排查
在网站搭建与论坛系统运维中,编码问题往往是影响数据迁移与多语言兼容的关键节点。Discuz作为国内广泛使用的社区程序,其X3.5版本对PHP 8.x和MySQL 8提供了原生支持,并默认推荐采用UTF8编码,以兼容包括Emoji在内的全球字符集。理解UTF8与GBK在存储机制、字符覆盖范围上的差异,是避免乱码和接口对接失败的基础。从环境准备、目录权限、安装向导配置,到老站GBK数据转换至UTF8的完整流程,每一步都需严格保持字符集统一。针对常见的数据库连接失败、invalid byte sequence、伪
基于线性车辆三自由度动力学+无迹卡尔曼滤波UKF估计模型(横摆角速度+质心侧偏角+车速)联合仿真
内容概要:通过构建基于线性车辆三自由度动力学模型与无迹卡尔曼滤波(UKF)的联合仿真系统,实现对车辆关键状态参数的高精度估计,重点包括横摆角速度、质心侧偏角和车速。该方法利用车辆动力学模型描述其横向、纵向及横摆运动行为,结合UKF这一适用于非线性系统的先进状态估计算法,有效处理传感器噪声和模型不确定性,从而在缺乏直接测量手段的情况下,实现对难以获取状态量的可靠估计。整个仿真框架通常在MATLAB/Simulink环境中搭建,能够模拟真实驾驶工况,验证算法的有效性和鲁棒性,为车辆稳定性控制、自动驾驶感知与决策等高级功能提供重要的状态信息支撑。; 适合人群:具备车辆动力学、现代控制理论和MATLAB/Simulink仿真基础,从事汽车工程、自动驾驶或状态估计相关研究的研发人员与研究生。; 使用场景及目标:① 深入理解并掌握非线性系统状态估计的核心方法,特别是UKF的原理与实现;② 学习如何将理论化的车辆动力学模型转化为可用于仿真的模块;③ 实践并验证车辆关键状态(如质心侧偏角)的间接估计技术,服务于车辆动态控制系统的设计与测试。; 阅读建议:此资源以开发仿真模型为核心,不仅关注代码和模型的实现,更强调对车辆动力学机理和滤波算法设计思路的理解。学习者应结合理论知识,动手搭建并调试仿真模型,通过改变工况和参数来观察估计效果,从而深刻领会系统辨识与状态估计在实际工程中的应用价值。


基础编程
