DB.php
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:3k
源码类别:

P2P编程

开发平台:

Visual C++

  1. <?php
  2. //define("__SQL_DEBUG", 1);
  3. //define("__SQL_LOGFILE", 'debug/sql_logfile.txt');
  4. /*
  5.  * 数据库连接
  6.  * 参数: $max_retries 最大尝试连接次数
  7.  */
  8. function db_connect($max_retries = 3) {
  9. GLOBAL $DB_Host, $DB_User, $DB_Pwd, $DB_Name;
  10. GLOBAL $__DB_CONNID;
  11. if($__DB_CONNID)
  12. return $__DB_CONNID; // 存在连接标识,直接返回
  13. while($max_retries-- > 0) {
  14. $__DB_CONNID = @mysql_connect($DB_Host, $DB_User, $DB_Pwd);
  15. if($__DB_CONNID) {
  16. @mysql_select_db($DB_Name, $__DB_CONNID);
  17. break;
  18. } else {
  19. internalError("Could not connect to MySQL,n" . mysql_error());
  20. sleep(1); // 暂停 1 秒后继续尝试连接
  21. }
  22. }
  23. return $__DB_CONNID;
  24. }
  25. function db_disconnect() {
  26. GLOBAL $__DB_CONNID;
  27. @mysql_close($__DB_CONNID);
  28. $__DB_CONNID = false; // 取消全局的连接标识
  29. }
  30. /*
  31.  * 数据库查询
  32.  * 参数: $query 查询语句
  33.          $unbuffered 是否使用非缓冲查询
  34.  */
  35. function db_query($query, $unbuffered = false) {
  36. GLOBAL $__DB_CONNID;
  37. if(!$__DB_CONNID)
  38. $__DB_CONNID = db_connect();
  39. if(defined("__SQL_DEBUG")) {
  40. $startTime = utime();
  41. }
  42. if(!$unbuffered) {
  43. $ret = @mysql_query($query, $__DB_CONNID) or internalError("Query invalid:n".$query."n".mysql_error());
  44. } else {
  45. $ret = @mysql_unbuffered_query($query, $__DB_CONNID) or internalError("Query invalid:n".$query."n".mysql_error());
  46. }
  47.     // 如果开启了数据库调试,将查询动作进行记录
  48. if(defined("__SQL_DEBUG")) {
  49. GLOBAL $db_pageQueries;
  50. $db_pageQueries[] = $query;
  51. if(defined("__SQL_LOGFILE")) {
  52. if($fp = fopen(__SQL_LOGFILE, 'a')) {
  53. $duration = (utime() - $startTime) * 1000;
  54. fputs($fp, date("Y-m-d H:i:s") . ": " . $_SERVER['REQUEST_URI'] . ": $duration: " . $query . "n");
  55.        fclose($fp);
  56. }
  57. }
  58. }
  59. return $ret;
  60. }
  61. // 快速查询(非缓冲)
  62. function db_fast_query($query) {
  63. return db_query($query, true);
  64. }
  65. // 受到查询影响的列数
  66. function db_affected_rows() {
  67.     return @mysql_affected_rows($GLOBALS['__DB_CONNID']);
  68. }
  69. function db_free_result($res) {
  70.   return @mysql_free_result($res);
  71. }
  72. function db_num_rows($res) {
  73.   return @mysql_num_rows($res);
  74. }
  75. function db_fetch_row($res) {
  76.   return @mysql_fetch_row($res);
  77. }
  78. function db_insert_id() {
  79.   return @mysql_insert_id($GLOBALS['__DB_CONNID']);
  80. }
  81. function db_fetch_array($res, $type = MYSQL_ASSOC) {
  82.   return @mysql_fetch_array($res, $type);
  83. }
  84. /*
  85.  * 提交查询并获取返回的数据
  86.  * 参数: $sql 查询语句
  87.  */
  88. function db_query_get_array($sql) {
  89. $res = db_fast_query($sql);
  90. if(!$res)
  91. internalError("Error in db_query_get_array for $sql");
  92. $ret = Array();
  93. while($v = db_fetch_array($res)) {
  94. array_push($ret, $v);
  95. }
  96. db_free_result($res);
  97. return $ret;
  98. }
  99. ?>