Discuz教程网

discuz7 PHPMysql操作类

[复制链接]
authicon dly 发表于 2011-9-3 19:45:09 | 显示全部楼层 |阅读模式
代码如下:

  1. <?php
  2. /*
  3. * MySql数据库连接类
  4. * mysql.class.php 2009.04.15 by Hackbaby
  5. */
  6. class dbstuff {
  7. var $version = '';
  8. var $querynum = 0;
  9. var $link = null;
  10. //连接数据库
  11. function connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect = 0, $halt = TRUE, $dbcharset2 = '') {
  12. $conn = empty($pconnect) ? 'mysql_connect' : 'mysql_pconnect';
  13. if (!$this->link = @$conn($dbhost, $dbuser, $dbpw, 1)) {
  14. $halt && $this->halt('Can not connect to MySQL server');
  15. } else {
  16. if($this->version() > '4.1') {
  17. global $charset, $dbcharset;
  18. $dbcharset = $dbcharset2 ? $dbcharset2 : $dbcharset;
  19. $dbcharset = !$dbcharset && in_array(strtolower($charset), array('gbk', 'big5', 'utf-8')) ? str_replace('-', '', $charset) : $dbcharset;
  20. $serverset = $dbcharset ? 'character_set_connection='.$dbcharset.', character_set_results='.$dbcharset.', character_set_client=binary' : '';
  21. $serverset .= $this->version() > '5.0.1' ? ((empty($serverset) ? '' : ',').'sql_mode=\'\'') : '';
  22. $serverset && mysql_query("SET $serverset", $this->link);
  23. }
  24. $dbname && @mysql_select_db($dbname, $this->link);
  25. }

  26. }
  27. //选择数据库
  28. function select_db($dbname) {
  29. return mysql_select_db($dbname, $this->link);
  30. }
  31. //数据库执行后的返回方法
  32. function fetch_array($query, $result_type = MYSQL_ASSOC) {
  33. return mysql_fetch_array($query, $result_type);
  34. }
  35. //返回fetch_array方法执行后的返回值
  36. function fetch_first($sql) {
  37. return $this->fetch_array($this->query($sql));
  38. }
  39. //返回result方法执行后的返回值
  40. function result_first($sql) {
  41. return $this->result($this->query($sql), 0);
  42. }
  43. //执行对数据库的操作
  44. function query($sql, $type = '') {
  45. global $debug, $discuz_starttime, $sqldebug, $sqlspenttimes;
  46. //判断debug调试
  47. if(defined('SYS_DEBUG') && SYS_DEBUG) {
  48. @include_once WEB_ROOT.'./include/debug.func.php';
  49. sqldebug($sql);
  50. }
  51. //
  52. $func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query') ?
  53. 'mysql_unbuffered_query' : 'mysql_query';
  54. if(!($query = $func($sql, $this->link))) {
  55. if(in_array($this->errno(), array(2006, 2013)) && substr($type, 0, 5) != 'RETRY') {
  56. $this->close();
  57. require './config.inc.php';
  58. $this->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset);
  59. $this->query($sql, 'RETRY'.$type);
  60. } elseif($type != 'SILENT' && substr($type, 5) != 'SILENT') {
  61. $this->halt('MySQL Query Error', $sql);
  62. }
  63. }
  64. //查询条数加1
  65. $this->querynum++;
  66. return $query;
  67. }
  68. //取得前一次 MySQL 操作所影响的记录行数
  69. function affected_rows() {
  70. return mysql_affected_rows($this->link);
  71. }
  72. //数据库的文本错误提示
  73. function error() {
  74. return (($this->link) ? mysql_error($this->link) : mysql_error());
  75. }
  76. //返回上一个 MySQL 操作中的错误信息的数字编码
  77. function errno() {
  78. return intval(($this->link) ? mysql_errno($this->link) : mysql_errno());
  79. }
  80. //返回数据库操作结果
  81. function result($query, $row = 0) {
  82. $query = @mysql_result($query, $row);
  83. return $query;
  84. }
  85. //返回数据库查询等操作的数目
  86. function num_rows($query) {
  87. $query = mysql_num_rows($query);
  88. return $query;
  89. }
  90. //取得结果集中字段的数目
  91. function num_fields($query) {
  92. return mysql_num_fields($query);
  93. }
  94. //释放结果内存
  95. function free_result($query) {
  96. return mysql_free_result($query);
  97. }
  98. //取得上一步 INSERT 操作产生的 ID
  99. function insert_id() {
  100. return ($id = mysql_insert_id($this->link)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0);
  101. }
  102. //以数组的形式返回查询结果
  103. function fetch_row($query) {
  104. $query = mysql_fetch_row($query);
  105. return $query;
  106. }
  107. //从结果集中取得列信息并作为对象返回
  108. function fetch_fields($query) {
  109. return mysql_fetch_field($query);
  110. }
  111. //获取Mysql的版本
  112. function version() {
  113. if(empty($this->version)) {
  114. $this->version = mysql_get_server_info($this->link);
  115. }
  116. return $this->version;
  117. }
  118. //关闭连接
  119. function close() {
  120. return mysql_close($this->link);
  121. }
  122. //错误提示
  123. function halt($message = '', $sql = '') {
  124. define('CACHE_FORBIDDEN', TRUE);
  125. require_once WEB_ROOT . './include/db_mysql_error.inc.php';
  126. }
  127. }
  128. ?>
复制代码





上一篇:一个PHP Mysql类 可以参考学习熟悉下
下一篇:PHP 将bmp图片转为jpg等其他任意格式的图片
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2024-11-1 08:01

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表