【问题标题】:Getting an error when trying to use private PDO object尝试使用私有 PDO 对象时出错
【发布时间】:2014-08-31 20:07:18
【问题描述】:

所以我正在设置一个类,允许我使用简单的函数查询其中的数据库,但是每当我尝试使用数据库时都会出现以下错误: Using $this when not in object context

我的代码:

class Test {
    // Database variables
    private $DB, $DBconnectString = '';

    // Construct method (works perfectly)
    function __construct(){
        try {
            $this->DB = new PDO($this->DBconnectString, static::DATABASE_USERNAME, static::DATABASE_PASSWORD);
            $this->DB -> exec("SET CHARACTER SET utf8");
            $this->DB -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch(PDOexception $error) {
            error_log($error);
            die('Could not connect to the database');
        }
    }

    // I get an error whenever I try to query from the database.
    public static function test() {
        $query = $this->DB->prepare('SELECT * FROM `testable`');
        $query -> execute($data);
    }
}

// I call this function like this:
$Test= new Test();
$Test->test();

【问题讨论】:

  • 你是怎么调用函数的?
  • @hjpotter92 $Test= new Test(); $Test->test();
  • @hjpotter92 如果您不将它们定义为私有或受保护,它们会自动公开。
  • @Paradoxis 当你var_dump($this->DB);时你会得到什么?
  • @CharlotteDunois 我得到了完全相同的错误

标签: php oop pdo


【解决方案1】:

错误出现在public static 中,删除static 关键字修复了代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多