这是最奇怪的错误!这可能是愚蠢的,但我不知道如何解决它。如果有人能提供帮助,我将非常感激!我有三个文件,一个叫做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
答案 0 :(得分: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;
}