PHP类数据库连接范围问题

时间:2008-09-26 10:03:25

标签: php mysql class scope code-reuse

对于我在PHP中进行的新项目,我创建了一个SQLMethods类来连接数据库并执行查询。今晚是我实际测试它的第一个晚上(我在大约一个星期前写了它并忘了它)并发生意外错误:当它调用我的ExecuteQuery()函数时,它不会使用数据库我在构造函数中选择。

构造函数:

    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());
    }

有谁看到问题可能是什么?构造函数完成后连接是否关闭?

3 个答案:

答案 0 :(得分:7)

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

 $this->SQLConnection

而不仅仅是$ SQLConnection。

答案 1 :(得分:2)

$SQLConnection方法中不存在

ExecuteQuery

您可以将其作为参数直接传递给ExecuteQuery,也可以添加在构造函数中设置的sqlConnection类属性,并在类方法中作为$this->sqlConnection进行访问。

答案 2 :(得分:1)

尝试使用的变量$SQLConnection ExecuteQuery()是在另一个范围内创建的。 (SQLMethods功能)。

当PHP脚本完成其工作或您自己关闭它时(如果在该脚本中建立连接),连接将关闭

您应该跳过php.net文档中所述的$SQLConnection中的ExecuteQuery变量

  

如果未指定链接标识符,则假定mysql_connect()打开的最后一个链接。