PHP数据库类非对象查询

时间:2014-07-10 13:04:24

标签: php mysql

我有一个小班,我唯一想要包装的就是建立联系:

<?php
/**
 * DB class
 */
class DB {
    private static $_instance = NULL;
    private $_mysqli;

    private function __construct() {
        try {
            $this->_mysqli = new Mysqli('localhost', 'root', '', 'tradePlace');
        } catch(Exception $e) {
            throw new Exception(
                "Details: " . $e->getMessage()
            );
        }
    }

    public static function getInstance() {
        if(!isset(self::$_instance)) {
            self::$_instance = new DB();
        }

        return self::$_instance;
    }
}

但如果我这样做:

$result = DB::getInstance()->query("SELECT 
                password, salt, COUNT(id) AS founds
                FROM users
                WHERE username = '' LIMIT 1");

我收到此错误:

  

致命错误:在非对象上调用成员函数query()   在 C \ xampp \ htdocs \ classes \ User.php 10

为什么呢?它应该是一个对象。当我将return self::$_instance更改为return self::$_mysqli时,我收到此错误:

  


致命错误:访问未声明的静态属性:   在线上 C:\ xampp \ htdocs \ classes \ DB.php 中的DB :: $ _ mysqli    20

我是OOP编程的初学者,但我不明白为什么这不起作用。

1 个答案:

答案 0 :(得分:-3)

如果要访问mysqli :: query,请重新声明_mysqli

public $_mysqli;

然后使用此代码

$result = DB::getInstance()->_mysqli->query("SELECT ...