这是我正在尝试做的事情:我有一个db.php文件,可以完成所有数据库操作。
它有2种静态方法,连接和断开。
在我的其他文件中,我只使用db :: connect()和db :: deconnect()。 deconnect方法中的mysql_close($ con)只是不知道$ con是谁。
因为我不想实例化我的类静态是唯一的方法。
在类db中声明'private $ con'似乎没有效果。
有什么想法吗?
class db {
public static function connect() {
$dbData = parse_ini_file($_SERVER['DOCUMENT_ROOT'].'/config.ini');
$con = mysql_connect($dbData['host'],$dbData['user'],$dbData['pass']);
$db = mysql_select_db($dbData['db']);
if ((!$con) || (!$db))
return 0;
else return 1;
}
public static function deconnect() {
mysql_close($con);
}
}
答案 0 :(得分:1)
在deconnect
中,$con
超出了范围。
你应该把它变成一个静态成员,如下所示:
class db {
static $con;
public static function connect() {
$dbData = parse_ini_file($_SERVER['DOCUMENT_ROOT'].'/config.ini');
self::$con = mysql_connect($dbData['host'],$dbData['user'],$dbData['pass']);
$db = mysql_select_db($dbData['db']);
if ((!self::$con) || (!$db))
return 0;
else return 1;
}
public static function deconnect() {
if( !isset( self::$con ) ) return;
mysql_close( self::$con );
}
}
答案 1 :(得分:0)
该消息有意义,因为$con
方法中的deconnect()
超出了范围(断开......?)。
使用静态数据成员
class db {
static $con;
}
通过self::$con
访问它。
答案 2 :(得分:0)
好吧,在我看来,$ con是一个局部变量(方法连接的本地变量)。因此,当您调用mysql_close时,很可能$ con未定义。尝试将$ con声明为您班级中的私有变量。请查看here以获取有关如何执行此操作的详细信息。