php 在 null 上调用成员函数 query()

标签 php mysql

你好我收到这个错误

Call to a member function query() on null

Fatal error: Call to a member function query() on null

Call to member function query() on Null

但似乎都没有解决我的问题

我有数据库类

class DB
{
    private $link;

    public function __construct() 
    {
        $this->link = new mysqli(HOSTNAME, USERNAME, PASSWORD, DBNAME);
        if ($this->link->connect_error) 
        {
            exit('Some of the database login credentials seem to be wrong.' . $this->link->connect_error);
        }
    }
}

然后我尝试用这个类查询数据库

class UserModel extends DB
{
    private $db;

    public function __construct()
    {
        $this->getUser();
    }

    public function getUser()
    {
        $query = $this->db->query("SELECT * FROM users");
        var_dump($query);
    }
}

这些文件在site/app/model/file.php

我在我的 site/index.php 中实例化数据库

最佳答案

这里有几个错误:

  1. 当您在 UserModel 类中定义自己的构造时,父级 __construct(定义了 $link var)不会运行。您可以将 parent::__construct(); 添加到子构造函数。

  2. 在您的父类中,您有 $link 变量,而不是 $db。并且 $linkprivate,因此它在子类中不可用。

固定代码是

class DB
{
    protected $link;   // protected here

    public function __construct() 
    {
        $this->link = new mysqli(HOSTNAME, USERNAME, PASSWORD, DBNAME);
        if ($this->link->connect_error) 
        {
            exit('Some of the database login credentials seem to be wrong.' . $this->link->connect_error);
        }
    }
}


class UserModel extends DB
{

    public function __construct()
    {
        // call parent construct and define $this->link
        parent::__construct();  
        $this->getUser();
    }

    public function getUser()
    {
        // use $this->link
        $query = $this->link->query("SELECT * FROM users");
        var_dump($query);
    }
}

关于php 在 null 上调用成员函数 query(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39434570/

相关文章:

php - 在一个字段中搜索整个单词,只搜索单词

MySQL/MariaDB 存储过程语法错误故障排除

php - 使用 PHP,是否可以将动画 gif 与 jpg 合并并保留 gif 动画?

MYSQL - 如何返回两列的唯一计数

mysql - 在复杂的 mySQL 语句中添加不等于

php - 如何从已拖放到特定区域的图像中获取值并插入到数据库中?

mysql - 拉拉维尔 4 : multiple where with or in eloquent

php - 苹果推送通知问题

php - 数组函数不使用 array_shift() 进行迭代

javascript - 在 Laravel 中获取 AJAX 数据