接收"调用成员函数prepare()on null"错误,但数据仍然添加到数据库中

时间:2017-03-23 14:53:47

标签: php pdo

我试图找出可能导致"在null"上调用成员函数prepare()的原因。在我的代码中,但我无法弄清楚它为什么会发生。这是我目前的代码:

Foo

获取$password_hash = password_hash($this->password, PASSWORD_DEFAULT); $sql = 'INSERT INTO users (name, email, password_hash) VALUES (:name, :email, :password_hash)'; $db = static::getDB(); $stmt = $db->prepare($sql); //This is the line specified in the error $stmt->bindValue(':name', $this->name, PDO::PARAM_STR); $stmt->bindValue(':email', $this->email, PDO::PARAM_STR); $stmt->bindValue(':password_hash', $password_hash, PDO::PARAM_STR); $stmt->execute(); 的代码在这里:

$db

此代码中的值来自配置文件,其中包含所有正确的数据。让我感到困惑的是,在提交表单条目时出现此错误。表单条目中的数据最终在数据库中,因此我知道连接和数据是正确的,但是这个错误不断弹出,阻止我的代码返回到成功屏幕。

更新

以下是$dsn = 'mysql:host='.Config::DB_HOST.';dbname='.Config::DB_NAME.';charset=utf8'; $db = new PDO($dsn, Config::DB_USER, Config::DB_PASSWORD); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $db; 的完整静态函数:

static::getDB()

1 个答案:

答案 0 :(得分:1)

static::getDB()

我认为你不明白它是如何运作的。 static来自班级中的used to resolve static calls 。你的主要代码似乎根本不属于一个类。所以你应该引用类名本身

Model::getDB()