db.php

来自「mysee网络直播源代码Mysee Lite是Mysee独立研发的网络视频流媒体」· PHP 代码 · 共 119 行

PHP
119
字号
<?php
//define("__SQL_DEBUG", 1);
//define("__SQL_LOGFILE", 'debug/sql_logfile.txt');

/*
 * 数据库连接
 * 参数: $max_retries 最大尝试连接次数
 */
function db_connect($max_retries = 3) {
	GLOBAL $DB_Host, $DB_User, $DB_Pwd, $DB_Name;
	GLOBAL $__DB_CONNID;

	if($__DB_CONNID)
		return $__DB_CONNID; // 存在连接标识,直接返回

	while($max_retries-- > 0) {
		$__DB_CONNID = @mysql_connect($DB_Host, $DB_User, $DB_Pwd);
		if($__DB_CONNID) {
			@mysql_select_db($DB_Name, $__DB_CONNID);
			break;
		} else {
			internalError("Could not connect to MySQL,\n" . mysql_error());
			sleep(1); // 暂停 1 秒后继续尝试连接
		}
	}

	return $__DB_CONNID;
}

function db_disconnect() {
	GLOBAL $__DB_CONNID;
	@mysql_close($__DB_CONNID);
	$__DB_CONNID = false; // 取消全局的连接标识
}

/*
 * 数据库查询
 * 参数: $query 查询语句
         $unbuffered 是否使用非缓冲查询
 */
function db_query($query, $unbuffered = false) {
	GLOBAL $__DB_CONNID;

	if(!$__DB_CONNID)
		$__DB_CONNID = db_connect();

	if(defined("__SQL_DEBUG")) {
		$startTime = utime();
	}

	if(!$unbuffered) {
		$ret = @mysql_query($query, $__DB_CONNID) or internalError("Query invalid:\n".$query."\n".mysql_error());
	} else {
		$ret = @mysql_unbuffered_query($query, $__DB_CONNID) or internalError("Query invalid:\n".$query."\n".mysql_error());
	}

    // 如果开启了数据库调试,将查询动作进行记录
	if(defined("__SQL_DEBUG")) {
		GLOBAL $db_pageQueries;
		$db_pageQueries[] = $query;
		if(defined("__SQL_LOGFILE")) {
			if($fp = fopen(__SQL_LOGFILE, 'a')) {
				$duration = (utime() - $startTime) * 1000;
				fputs($fp, date("Y-m-d H:i:s") . ": " . $_SERVER['REQUEST_URI'] . ": $duration: " . $query . "\n");
      			fclose($fp);
			}
		}
	}

	return $ret;
}

// 快速查询(非缓冲)
function db_fast_query($query) {
	return db_query($query, true);
}

// 受到查询影响的列数
function db_affected_rows() {
    return @mysql_affected_rows($GLOBALS['__DB_CONNID']);
}

function db_free_result($res) {
  return @mysql_free_result($res);
}

function db_num_rows($res) {
  return @mysql_num_rows($res);
}

function db_fetch_row($res) {
  return @mysql_fetch_row($res);
}

function db_insert_id() {
  return @mysql_insert_id($GLOBALS['__DB_CONNID']);
}

function db_fetch_array($res, $type = MYSQL_ASSOC) {
  return @mysql_fetch_array($res, $type);
}

/*
 * 提交查询并获取返回的数据
 * 参数: $sql 查询语句
 */
function db_query_get_array($sql) {
	$res = db_fast_query($sql);
	if(!$res)
		internalError("Error in db_query_get_array for $sql");
	$ret = Array();
	while($v = db_fetch_array($res)) {
		array_push($ret, $v);
	}
	db_free_result($res);
	return $ret;
}

?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?