您好我正在使用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;
}
}
?>
答案 0 :(得分:1)
Database
是一个类,而不是变量,因此您可以使用Database
来调用它,而不是$Database
。getConnection
是一个函数/方法,而不是变量/字段,因此您必须在其名称后使用括号:getConnection()
。getConnection
是一个非静态函数,因此您无法在Database
上调用它,您必须获取该类的实例(使用Database::getInstance()
)。< / LI>
醇>
总而言之,替换这一行:
$check = $Database->getConnection->query($sql);
用这个:
$check = Database::getInstance()->getConnection()->query($sql);