在Null

时间:2015-05-11 08:28:55

标签: php mysql

所以,试着制作一个我以前做过的简单的注册/登录表格,但不是为了地狱,我能弄明白为什么会发生这种情况。我的代码如下所示。

我已经将错误评论出来,说明它发生的行。

<?php 

class connection{

    private $hostname = "localhost";
    private $username = "root";
    private $password = "";
    private $database = "test";
    private $conn;

    public function __construct(){
        $conn = new mysqli($this->hostname, $this->username, $this->password, $this->database)or die("MySQL Connection Error");
    }
    public function getConn(){
        return $this->conn;
    }
}
class queries{

    private $conn;

    public function __construct($conn){
        $this->conn = $conn;
    } 

    public function checkUser($username, $email){
        $query = "SELECT * FROM users WHERE username = '$username' OR email = '$email'";

//Call to  a member function query() on null in C:\xampp\htdocs\i\functions.php on line 28

        $result = $this->conn->query("$query");
        return $result;
    }

    public function insertUser($activated, $activation_code, $firstname, $lastname, $username, $password, $email){
        $query = "INSERT INTO users (activated, activation_code, firstname, lastname, username, password, email)
                  VALUES ('$activated', '$activation_code', '$firstname', '$lastname', '$username', '$password', '$email')";
        $result = $this->conn->query("$query");
    }
}

看起来很简单吧..现在是我正在使用的页面上的php代码(register.php)。

if (isset($_POST['register'])) {

    include 'functions.php';

    $connection = new connection();
    $query = new queries($connection->getConn());

    $firstname = mysql_real_escape_string($_POST['firstname']);
    $lastname  = mysql_real_escape_string($_POST['lastname']);
    $username  = mysql_real_escape_string($_POST['username']);
    $email     = mysql_real_escape_string($_POST['email']);
    $password  = sha1($_POST['password']);

    $user = $query->checkUser($username, $email);

    if ($user->num_rows > 0) {
        echo "User Exists";
    }else{
        echo "User Does not Exist";
    }
}

2 个答案:

答案 0 :(得分:3)

您的代码似乎是正确的,但在connection课程的构造函数中,您忘记使用$this,将其更改为以下内容:

public function __construct() {
    $this->conn = new mysqli($this->hostname, $this->username, $this->password, $this->database)or die("MySQL Connection Error");
}

答案 1 :(得分:-1)

你忘了$ conn上的美元符号:

$result = $this->conn->query("$query");

应该是:

$result = $this->$conn->query($query);