我需要将mysql_connect()的值保存在一个全局变量中,该变量可以在我项目中的每个php文件中访问
例如,$db_ServerVal = mysql_connect()
。
我需要能够在程序开始时只调用一次mysql_connect。
然后在每个php文件中 - $db_ServerVal
必须有效。不是第一次。
每次。在我致电mysql_close( $db_ServerVal)
;
我可以使用php中的预定义数组$GLOBALS[]
来存储我的$db_ServerVal
数据库连接吗?
另一个问题是 - 我需要在浏览器窗口关闭时发生'关闭'事件,
所以我知道是时候拨打mysql_close( $db_ServerVal);
。
我无法在index.php文件的末尾调用mysql_close()
,因为那样会关闭。{1}}
数据库过早,然后每次我访问数据库时我都需要再次mysql_connect()
。
虽然我可以在每次数据库调用之前和之后调用mysql_connect()
和mysql_close()
- 但我不是
确定这是否是事情的标准方式。
答案 0 :(得分:2)
首先,您不需要存储此变量,因为如果省略db_connection参数,则所有mysql_ *函数都将使用上次打开的连接。如果要同时打开多个数据库连接,则只需要存储它。
第二,mysql连接将在脚本结束时自动关闭。在大多数情况下没有必要关闭它。
第三,你不应该再使用mysql_ *了。使用mysqli_ *或推荐的 PDO类。
答案 1 :(得分:2)
每次都不要关闭数据库。您甚至可以选择不关闭连接,因为它将在脚本结束时隐式关闭。
如果您希望能够随时连接,可以为此编写一个函数:
$_connection = false;
function getConnection()
{
global $_connection;
if (!$_connection)
$_connection = mysql_connect( ... );
return $_connection;
}
function closeConnection()
{
global $_connection;
if ($_connection)
mysql_close($_connection);
$_connection = false;
}
当然,将连接嵌入到实际的类中会更好,但这会让您开始解决问题。宝贝的步骤。 :)
答案 2 :(得分:1)
这是我的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);
}
答案 3 :(得分:1)
我通常基于每页进行数据库连接调用,而不是基于每个查询。所以我在我需要连接的每个文件的顶部包含了我的数据库连接的文件:
require('db_connect.php');
在我在需要连接的页面上做了任何事情后关闭它。你应该做的是根据你的需要,所以在这个意义上,它取决于它。
答案 4 :(得分:1)
您可以将连接对象存储在全局变量中,并通过$ GLOBALS访问它。请注意,除非您使用持久连接(如果您这样做,您应该知道自己在做什么),否则无论如何,当PHP脚本结束时,数据库连接将自动关闭。