首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何声明一个php变量来保存"mysql_connect()“的返回值?

问如何声明一个php变量来保存"mysql_connect()“的返回值?
EN

Stack Overflow用户
提问于 2011-06-11 05:40:54
回答 5查看 2.7K关注 0票数 2

我需要将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() --但我不确定这是否是完成任务的标准方法。

EN

回答 5

Stack Overflow用户

发布于 2011-06-11 05:45:10

首先,您不需要存储此变量,因为如果省略db_connection参数,则所有mysql_*函数都将使用上次打开的连接。如果要同时打开多个数据库连接,则只需存储此信息。

其次,mysql连接将在脚本结束时自动关闭。在大多数情况下,不需要关闭它。

第三,你不应该再使用mysql_*了。使用mysqli_*或推荐的PDO类。

票数 2
EN

Stack Overflow用户

发布于 2011-06-11 05:50:12

不要每次都关闭数据库。您甚至可以选择根本不关闭连接,因为它将在脚本结束时隐式关闭。

如果你想始终保持连接,你可以为此编写一个函数:

代码语言:javascript
复制
$_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
EN

Stack Overflow用户

发布于 2011-06-11 05:44:53

这是我的db课上的,但我想这应该会对你有帮助。只需在第一次需要时打开它,并在页面末尾关闭它。或者,像我一样,在db类的构造函数中使用connect,在析构函数中使用close。

代码语言:javascript
复制
//Constructor Code
$this->link_id = mysql_connect($this->db_host, $this->db_user, $this->db_pass);


//Destructor Code
@mysql_close($this->link_id);

下面是我使用的两种方法中的一个示例。

代码语言:javascript
复制
    //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);

    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6312355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档