php - 调用未定义的方法 pdo::prepare

标签 php mysql object pdo instance

我正在为网站编写一个注册脚本,并使用registration.php脚本中的databaseConnection函数测试了代码,一切正常,但现在我将databaseConnection函数替换为单独的文件,因此我不必键入相同的代码每次都会重来一次。

我从databaseConnection.php文件中获取了数据库实例,并将其加载到registration.php中的私有(private)变量$db_connection中,现在我想为sql语句准备连接,但脚本返回错误“调用未定义”方法 DatabaseConnection::prepare()'

这是databaseConnection.php脚本

<?php
class DatabaseConnection {
//private zodat niemand een nieuwe kan maken
private static $instance = null;
//constructor private zodat niemand instantie kan klonen
private function __construct(){
    try{
        $this->db_connection = new PDO('mysql:host='. DB_HOST .';dbname='. DB_NAME, DB_USER, DB_PASS);
        return true;
    } catch (PDOException $exception){
            $this->errors[] = $this->lang['Database error'];
        return false;
    }
}
public static function getInstance(){
    if(self::$instance === null)
        self::$instance = new DatabaseConnection();

    return self::$instance;
}
}
?>

我将实例加载到registration.php中的__construct函数中的$db_connection中,如下所示

$this->db_connection = databaseConnection::getInstance();

现在我的代码在 $check_user_name=... 行崩溃

...
        } else if ($this->db_connection != null){
        $check_username_query = $this->db_connection->prepare('SELECT user_name, user_email FROM users WHERE user_name=:user_name OR user_email=:user_email'); 
...

有人可以帮我解决这个错误吗?我在 stackoverflow 上读到了类似的问题,但无法根据其中给出的信息弄清楚。

问候

最佳答案

仔细阅读错误消息:“调用未定义的方法DatabaseConnection::prepare()”

您的DatabaseConnection::getInstance() 返回DatabaseConnection 的实例,而不是PDO。一种可能的解决方案是实现 __call()DatabaseConnection 中或像 Chris Barrett 所说的那样扩展 PDO

关于php - 调用未定义的方法 pdo::prepare,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20873145/

相关文章:

javascript - 在 JQuery 和执行函数中使用的 JSON 数组值

mysql - 从 Symfony 2 中的数据库中删除

php - 在 PHP 中,对象方法代码是否在实例之间重复或共享?

php - Laravel 5.5——经过身份验证的用户和 guest 用户的单独表

php - 如何阻止 PHP 通知出现在 wordpress 中?

php - 使用 Zend Mail 检查邮件文件夹是否存在

php - MySQL 必须匹配 2 个表中的两列...否则返回空结果?

PHP 无法更新 SQLSTATE[HY093] : Invalid parameter number: no parameters were bound

javascript - 如何将对象键转换为大写

ios 快速解析 : get data out of parse and use them