PHP类数据库连接作用域的问题(PHP Class Database Connection Scop

2019-10-17 12:07发布

对于我做在PHP中的新项目,我创建了一个SQLMethods类连接到数据库,然后执行查询。 今晚是第一个晚上,我居然得到了测试它(我一个星期左右前写它,忘掉了它),并发生意外错误:当有人打电话给我的executeQuery()函数,它不会使用数据库I在构造选择。

构造函数:

    public function SQLMethods() {
        $SQLConnection = mysql_connect($SQLDBAddress, $SQLUserName, $SQLPassword);

        if (!$SQLConnection) {
            die('Could not connect: ' . mysql_error());
        }

        mysql_select_db($SQLDB, $SQLConnection);
    }

有问题的功能:

    public function ExecuteQuery($Query) {
        mysql_query($Query, $SQLConnection) or die('Could not perform query: ' . mysql_error());
    }

有没有人看到这个问题可能是什么? 请问构造后的连接关闭完成?

Answer 1:

你应该声明$的SQLConnection在你的类,你应该把它称为

 $this->SQLConnection

而不是简单的$的SQLConnection。



Answer 2:

$SQLConnection不会在中存在ExecuteQuery方法。

您可以直接把它作为一个参数ExecuteQuery ,或添加sqlConnection是在构造函数中设置和访问类属性$this->sqlConnection类方法中。



Answer 3:

变量$SQLConnection ExecuteQuery()试图使用的另一范围内创建。 (该SQLMethods功能)。

连接关闭时,PHP脚本完成工作,或者如果你关闭它自己(如果连接的是,剧本内提出)

您应该跳过$SQLConnection内变量ExecuteQuery由php.net文档说明

如果没有指定的链接标识符,通过打开的最后链路mysql_connect()假设。



文章来源: PHP Class Database Connection Scope Issue