我需要将mysql_connect()的值保存在一个全局变量中,该变量可以在项目中的每个php文件中访问,例如$db_ServerVal = mysql_connect()。
我只需要能够在程序开始时调用mysql_connect一次。
然后在每个php文件中--该$db_ServerVal必须是有效的。不是第一次了。每次都是这样。直到我调用mysql_close( $db_ServerVal);
我可以使用php中的预定义数组$GLOBALS[]来存储我的$db_ServerVal数据库连接吗?
另一个问题是--当浏览器窗口关闭时,我需要有一个'close‘事件,这样我就知道是时候调用mysql_close( $db_ServerVal);了。
我不能在index.php文件的末尾调用mysql_close(),因为这将过早地关闭数据库,然后每次我访问数据库时,我都必须再次mysql_connect()。
虽然我可以在每次数据库调用之前和之后调用mysql_connect()和mysql_close() --但我不确定这是否是完成任务的标准方法。
发布于 2011-06-11 05:45:10
首先,您不需要存储此变量,因为如果省略db_connection参数,则所有mysql_*函数都将使用上次打开的连接。如果要同时打开多个数据库连接,则只需存储此信息。
其次,mysql连接将在脚本结束时自动关闭。在大多数情况下,不需要关闭它。
第三,你不应该再使用mysql_*了。使用mysqli_*或推荐的PDO类。
发布于 2011-06-11 05:50:12
不要每次都关闭数据库。您甚至可以选择根本不关闭连接,因为它将在脚本结束时隐式关闭。
如果你想始终保持连接,你可以为此编写一个函数:
$_connection = false;
function getConnection()
{
global $_connection;
if (!$_connection)
$_connection = mysql_connect( ... );
return $_connection;
}
function closeConnection()
{
global $_connection;
if ($_connection)
mysql_close($_connection);
$_connection = false;
}当然,将连接嵌入到实际的类中甚至更好,但这将使您开始解决问题。一步一步来。:)
发布于 2011-06-11 05:44:53
这是我的db课上的,但我想这应该会对你有帮助。只需在第一次需要时打开它,并在页面末尾关闭它。或者,像我一样,在db类的构造函数中使用connect,在析构函数中使用close。
//Constructor Code
$this->link_id = mysql_connect($this->db_host, $this->db_user, $this->db_pass);
//Destructor Code
@mysql_close($this->link_id);下面是我使用的两种方法中的一个示例。
//forward php4 to constructor
function db_class() {
return $this->__construct();
}
//constructor
function __construct() {
register_shutdown_function(array(&$this, "__destruct"));
$this->link_id = mysql_connect($this->db_host, $this->db_user, $this->db_pass);
mysql_select_db($this->db_name, $this->link_id);
}
//destructor
function __destruct() {
@mysql_close($this->link_id);
}https://stackoverflow.com/questions/6312355
复制相似问题