2015-05-11 53 views
1

所以只是試圖做一個簡單的註冊/登錄表單,我已經做過,但不是地獄,我可以弄清楚爲什麼會發生這種情況。我的代碼如下所示。調用成員函數查詢()在空

我發表了上面說的錯誤發生的錯誤。

<?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"; 
    } 
} 

回答

3

您的代碼似乎是正確的,但在你的connection類的構造函數,你忘了用$this,改成如下:

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

得到了乞丐! xD哈哈謝謝你 –

-1

你忘了在$ conn的美元符號:

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

應該是:

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

'$'不需要調用類方法。 – EternalHour

+1

你似乎試圖進一步打破我的代碼xD –

+3

我想你每天都會學到新東西:) –