所以我有一个数据库类,其函数如下:
public function sql($sql) {
$result = $this->connection->query($sql);
return $result;
}
但它返回错误:
致命错误:未捕获错误:不在对象上下文中时使用$ this
但我不知道为什么我会收到这个错误,我已经在互联网上看了一眼,但似乎没有人有这个确切的问题。
这是我的完整数据库类:
namespace Core;
require_once ("../config.php");
class DB {
public $connection;
public function __construct() {
$this->connection();
}
public function connection() {
$this->connection = new \mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($this->connection->connect_error) {
die("Database fout");
}
}
public function sql($sql) {
$result = $this->connection->query($sql);
return $result;
}
}
然后我这样称呼它:
DB::sql('SELECT * FROM `users`');
但后来我得到了错误。 :/
答案 0 :(得分:2)
DB::sql('SELECT * FROM `users`');
这是静态函数调用方法,在静态函数中你不能使用$this
你需要像
$database = new DB();
$sql = $database->sql('SELECT * FROM `users`')
在这种情况下,根据您的评论,您的课程应该是
<?php
namespace Core;
require_once ("../config.php");
class DB
{
public static $connection;
public static function connection()
{
self::$connection = new \mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if (self::$connection->connect_error) {
die("Database fout");
}
}
public static function sql($sql)
{
$result = self::$connection->query($sql);
return $result;
}
}
DB::connection();