1

这是最奇怪的错误!这可能很愚蠢,但我不知道如何解决它。如果有人可以提供帮助,我将不胜感激!我有三个文件,一个叫items.php,另一个叫tableFunctions.php,第三个叫mysql.php。我使用两个名为“mysql”和“tableFunctions”的全局对象。它们分别存储在文件“mysql.php”和“tableFunctions.php”中。在每个文件中,我创建其对象的一个​​实例,将其分配给全局变量 $_mysql 或 $_table。像这样:

在文件 mysql.php 中:

global $_mysql;
$_mysql = new mysql();

在文件 tableFunctions.php 中:

global $_table;
$_table = new tableFunctions();

这是它应该如何工作的:

items.php 文件包含 tableFunctions.php 文件......这又需要 mysql.php 文件,因此它也包含它。

在 items.php 文件中,我调用了 getTable() 方法,该方法包含在对象 tableFunctions 中。(以及变量 $_table 中。)像这样:

$t = $_table->getTable('items');

getTable 函数调用方法 arrayFromResult(),该方法包含在对象 mysql 中(和变量 $_mysql 中),如下所示:

$result  = $_mysql->arrayFromResult($r);

这就是我得到错误的地方。PHP 说变量 '$_mysql' 是未定义的,但我在 'mysql.php' 文件中定义了它。(见上文)我还包含 mysql.php 和以下代码:

include_once 'mysql.php';

我不知道出了什么问题!如果有人可以提供帮助,将不胜感激。可以通过以下链接下载源文件:https ://www.dropbox.com/sh/bjj2gyjsybym89r/YLxqyNvQdn

4

1 回答 1

0

这是一个常见的错误,在定义的地方你只需要这行:

$_mysql = new mysql();

当你想在函数中使用它时,只有在那里你必须将它声明为全局变量(否则它被认为与任何其他函数变量一样):

global $_mysql;

因此,例如,如果我们采用您的方法:

function getTable($tableName) {         
        $r = mysql_query("SELECT * FROM $tableName");
            err($r, 'mysql returned null when getting table!');

        $result  = $_mysql->arrayFromResult($r);
        return $result;
    }

它应该改为:

function getTable($tableName) {
        global $_mysql;
        $r = mysql_query("SELECT * FROM $tableName");
            err($r, 'mysql returned null when getting table!');

        $result  = $_mysql->arrayFromResult($r);
        return $result;
    }
于 2012-06-21T02:22:47.617 回答