discuz7 phpMysql操作类


Posted in PHP onJune 21, 2009
<?php 
/* 
* MySql数据库连接类 
* mysql.class.php 2009.04.15 by Hackbaby 
*/ 
class dbstuff { 
var $version = ''; 
var $querynum = 0; 
var $link = null; 
//连接数据库 
function connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect = 0, $halt = TRUE, $dbcharset2 = '') { 
$conn = empty($pconnect) ? 'mysql_connect' : 'mysql_pconnect'; 
if (!$this->link = @$conn($dbhost, $dbuser, $dbpw, 1)) { 
$halt && $this->halt('Can not connect to MySQL server'); 
} else { 
if($this->version() > '4.1') { 
global $charset, $dbcharset; 
$dbcharset = $dbcharset2 ? $dbcharset2 : $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("SET $serverset", $this->link); 
} 
$dbname && @mysql_select_db($dbname, $this->link); 
} } 
//选择数据库 
function select_db($dbname) { 
return mysql_select_db($dbname, $this->link); 
} 
//数据库执行后的返回方法 
function fetch_array($query, $result_type = MYSQL_ASSOC) { 
return mysql_fetch_array($query, $result_type); 
} 
//返回fetch_array方法执行后的返回值 
function fetch_first($sql) { 
return $this->fetch_array($this->query($sql)); 
} 
//返回result方法执行后的返回值 
function result_first($sql) { 
return $this->result($this->query($sql), 0); 
} 
//执行对数据库的操作 
function query($sql, $type = '') { 
global $debug, $discuz_starttime, $sqldebug, $sqlspenttimes; 
//判断debug调试 
if(defined('SYS_DEBUG') && SYS_DEBUG) { 
@include_once WEB_ROOT.'./include/debug.func.php'; 
sqldebug($sql); 
} 
// 
$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 './config.inc.php'; 
$this->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset); 
$this->query($sql, 'RETRY'.$type); 
} elseif($type != 'SILENT' && substr($type, 5) != 'SILENT') { 
$this->halt('MySQL Query Error', $sql); 
} 
} 
//查询条数加1 
$this->querynum++; 
return $query; 
} 
//取得前一次 MySQL 操作所影响的记录行数 
function affected_rows() { 
return mysql_affected_rows($this->link); 
} 
//数据库的文本错误提示 
function error() { 
return (($this->link) ? mysql_error($this->link) : mysql_error()); 
} 
//返回上一个 MySQL 操作中的错误信息的数字编码 
function errno() { 
return intval(($this->link) ? mysql_errno($this->link) : mysql_errno()); 
} 
//返回数据库操作结果 
function result($query, $row = 0) { 
$query = @mysql_result($query, $row); 
return $query; 
} 
//返回数据库查询等操作的数目 
function num_rows($query) { 
$query = mysql_num_rows($query); 
return $query; 
} 
//取得结果集中字段的数目 
function num_fields($query) { 
return mysql_num_fields($query); 
} 
//释放结果内存 
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); 
} 
//以数组的形式返回查询结果 
function fetch_row($query) { 
$query = mysql_fetch_row($query); 
return $query; 
} 
//从结果集中取得列信息并作为对象返回 
function fetch_fields($query) { 
return mysql_fetch_field($query); 
} 
//获取Mysql的版本 
function version() { 
if(empty($this->version)) { 
$this->version = mysql_get_server_info($this->link); 
} 
return $this->version; 
} 
//关闭连接 
function close() { 
return mysql_close($this->link); 
} 
//错误提示 
function halt($message = '', $sql = '') { 
define('CACHE_FORBIDDEN', TRUE); 
require_once WEB_ROOT . './include/db_mysql_error.inc.php'; 
} 
} 
?>
PHP 相关文章推荐
MySql 按时间段查询数据方法(实例说明)
Nov 02 PHP
PHP 数组教程 定义数组
Oct 23 PHP
QueryPath PHP 中的jQuery
Apr 11 PHP
php后台多用户权限组思路与实现程序代码分享
Feb 13 PHP
php递归创建和删除文件夹的代码小结
Apr 13 PHP
163的邮件用phpmailer发送(实例详解)
Jun 24 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
PHP通过插入mysql数据来实现多机互锁实例
Nov 05 PHP
推荐5款跨平台的PHP编辑器
Dec 25 PHP
php 问卷调查结果统计
Oct 08 PHP
ThinkPHP 5.x远程命令执行漏洞复现
Sep 23 PHP
laravel-admin自动生成模块,及相关基础配置方法
Oct 08 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 21 #PHP
ie6 动态缩略图不显示的原因
Jun 21 #PHP
PHP COOKIE设置为浏览器进程
Jun 21 #PHP
PHP 输出缓存详解
Jun 20 #PHP
php 图像函数大举例(非原创)
Jun 20 #PHP
PHP 类型转换函数intval
Jun 20 #PHP
php MYSQL 数据备份类
Jun 19 #PHP
You might like
ADODB的数据库封包程序库
2006/12/31 PHP
php自定义session示例分享
2014/04/22 PHP
PHP中if和or运行效率对比
2014/12/12 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
基于laravel缓冲cache的用法详解
2019/10/23 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
jQuery获取iframe的document对象的方法
2014/10/10 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
Python对文件操作知识汇总
2016/05/15 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
哈曼俄罗斯官方网上商店:Harman.club
2020/07/24 全球购物
final, finally, finalize的区别
2012/03/01 面试题
毕业生求职推荐信
2013/11/04 职场文书
旅游文化节策划方案
2014/06/06 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
财务统计员岗位职责
2015/04/14 职场文书
毕业论文致谢词
2015/05/14 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
人事任命书范本
2015/09/21 职场文书
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021/06/22 Python