无法从我的数据库类访问连接详细信息

时间:2015-10-10 14:28:19

标签: php mysql

您好我正在使用oophp创建注册和登录系统,我正在尝试检查数据库中是否已存在电子邮件或用户名,但是当我尝试调用数据库类时,我不断收到这些错误,任何帮助都会不胜感激。

  

注意:未定义的变量:数据库中   C:\ Users \用户乔希\ XAMPP-win32-1.8.3-5-VC11 \ XAMPP \ htdocs中\ oop_system \包括\ class.user.php   第14行

     

注意:尝试获取非对象的属性   C:\ Users \用户乔希\ XAMPP-win32-1.8.3-5-VC11 \ XAMPP \ htdocs中\ oop_system \包括\ class.user.php   第14行

     

致命错误:调用非对象中的成员函数query()   C:\ Users \用户乔希\ XAMPP-win32-1.8.3-5-VC11 \ XAMPP \ htdocs中\ oop_system \包括\ class.user.php   第14行

用户类

<?php 
    include "db_config.php";

    class User{

        /*** for registration process ***/
        public function reg_user($name,$username,$password,$email){


            $password = md5($password);
            $sql="SELECT * FROM users WHERE uname='$username' OR uemail='$email'";

            //checking if the username or email is available in db
            $check =  $Database->getConnection->query($sql) ;
            $count_row = $check->num_rows;

            //if the username is not in db then insert to the table
            if ($count_row == 0){
                $sql1="INSERT INTO users SET uname='$username', upass='$password', fullname='$name', uemail='$email'";
                $result = mysqli_query($this->db,$sql1) or die(mysqli_connect_errno()."Data cannot inserted");
                return $result;
            }
            else { return false;}
        }
    }
?>

db_config class

<?php
/*
* Mysql database class - only one connection alowed
*/
class Database {
    private $_connection;
    private static $_instance; //The single instance
    private $_host = "localhost";
    private $_username = "root";
    private $_password = "";
    private $_database = "oop";
    /*
    Get an instance of the Database
    @return Instance
    */
    public static function getInstance() {
        if(!self::$_instance) { // If no instance then make one
            self::$_instance = new self();
        }
        return self::$_instance;
    }
    // Constructor
    private function __construct() {
        $this->_connection = new mysqli($this->_host, $this->_username, 
        $this->_password, $this->_database);

        // Error handling
        if(mysqli_connect_error()) {
            trigger_error("Failed to conencto to MySQL: " . mysql_connect_error(),
                 E_USER_ERROR);
        }
    }
    // Magic method clone is empty to prevent duplication of connection
    private function __clone() { }
    // Get mysqli connection
    public function getConnection() {
        return $this->_connection;
    }
}
?>

1 个答案:

答案 0 :(得分:1)

  1. Database是一个类,而不是变量,因此您可以使用Database来调用它,而不是$Database
  2. getConnection是一个函数/方法,而不是变量/字段,因此您必须在其名称后使用括号:getConnection()
  3. getConnection是一个非静态函数,因此您无法在Database上调用它,您必须获取该类的实例(使用Database::getInstance())。< / LI>

    总而言之,替换这一行:

    $check = $Database->getConnection->query($sql);
    

    用这个:

    $check = Database::getInstance()->getConnection()->query($sql);