0

我正在尝试为我正在从事的项目创建一种面向对象的方法,但我很难理解数据库类的想法。我收到以下错误。

    Call to undefined method Database::prepare()

数据库类

class Database
{

    protected $connection;

    function __construct()
    {
        $this->createConnection();
    }

    private function createConnection()
    {

        $this->connection = new mysqli("localhost", "user", "password", "test");
        if ($this->connection->connect_errno)
        {
            echo "Failed to connect to MySQL: (" . $this->connection->connect_errno . ") " . $this->connection->connect_error;
        }
        else
        {
            echo 'Connected to database.<br />';
        }

    }
}

$db = new Database();

用户操作类

class userActions
{

    protected $_db;
    protected $_username;
    protected $_password;
    protected $_auth;
    protected $tableName;
    function __construct($db, $username, $password, $auth)
    {
        $this->_db = $db;
        $this->_username = $username;
        $this->_password = $password;
        $this->_auth = $auth;

        $this->checkUserExists();
    }

    private function checkUserExists()
    {
        $query= "SELECT COUNT(*) FROM '{$this->tableName}' WHERE username = ?";
        $stmt = $this->_db->prepare($query);
        $stmt->bind_param('s', $this->username);
        $userNumber= $stmt->execute();
        echo $userNumber;
    }
}

我做错了什么,我能做些什么来改善我完成这项任务的方式吗?

4

1 回答 1

1

您需要将以下方法添加到您的类中:

public function prepare($query) {
  return $this->connection->prepare($query);
}

您可以为您的类定义一个魔术方法,该方法会自动将任何未定义的方法传递给连接:

public function __call($name, $arguments) {
  return call_user_func_array(array($this->connection, $name), $arguments);
}
于 2013-06-28T22:25:48.043 回答