我有一个MySQLi类,但是当我初始化它然后尝试执行查询时,我收到以下错误:
注意:未定义的变量:MySQLi in ...
我是mysqli和类的新手
这是我的班级:
<?PHP
class DB
{
private static $instance;
private $MySQLi;
private function __construct(array $dbOpt)
{
$this->MySQLi = @ new MySQLi($dbOpt['db_host'],$dbOpt['db_user'],$dbOpt['db_pass'],$dbOpt['db_name']);
if(mysqli_connect_errno()) {
throw new Exception("Database connection error");
}
$this->MySQLi->set_charset("utf8");
}
public static function init(array $dbOpt)
{
if(self::$instance instanceof self) {
return false;
} else {
self::$instance = new self($dbOpt);
}
}
public static function getMySQLiObj() {
return self::$instance->$MySQLi;
}
public static function query($q) {
/* This is the line that fails */
return self::$instance->$MySQLi->query($q);
}
public static function escape($str) {
return self::$instance->$MySQLi->real_escape_string(htmlspecialchars($str));
}
}
?>
这是我的问题:
//Connect to database
DB::init($dbOpt);
$result = DB::query("SELECT * FROM myTable");
if(!$result) {
echo "MySQLi Query failed";
}
else {
//handle query
}
我在上面评论了失败的行。
答案 0 :(得分:1)
删除$
。您的DB::query()
方法的代码应如下所示:
return self::$instance->MySQLi->query($q);
注意,静态变量将以这种方式获得:
Classname::$varname
将按如下方式访问实例var:
$instance = new Classname();
$instance->varname;
答案 1 :(得分:1)
您不需要该行中的&gt; $ MySQLi上的$。
仅在类外的变量上才需要$。您在代码中的其他几行上也有此错误。