2015-09-26 70 views
-2

我試圖將一個登錄函數轉換爲類與一些功能,它一直工作,直到我把它轉換成類,這是我的代碼:Mysqli:致命的錯誤:調用成員函數prepare()null

class merwaa_login { 
public $conn; 
public function __construct($conn) { 
    $this->conn = $conn; 
    if(isset($_POST['login-submit'])) { 
    $username = merwaa_clean($_POST['username']); 
    $password = merwaa_clean($_POST['password']); 
    $sql = $conn->prepare("SELECT * FROM users WHERE username = ? OR email = ?;"); 
    $sql->bind_param('ss', $username, $username); 
    $sql->execute(); 
    $all = $sql->get_result(); 
    $all = $all->fetch_assoc(); 
    if (count($all) === 0){ 
     echo 'البيانات المدخلة خاطئة!'; 
    } 
    else{ 
     $hashed_pwd = $all['password']; 
     if (password_verify($password,$hashed_pwd)) { 
      echo 'كفو'; 
      $_SESSION['username'] = $username = $all['username']; 
      if(isset($POST['rememberme'])) { 
       $uid = $all['ID']; 
       merwaa_set_jwt($username,$uid); 
      } 

     } else{ 
      echo 'خطأ'; 
     } 
    } 
} 
} 
} 

我可能有一些語法錯誤,請注意關於它。

回答

0

更改此設置: -

$sql = $conn->prepare("SELECT * FROM users WHERE username = ? OR email = ?;"); 

要這樣: -

$sql = $this->conn->prepare("SELECT * FROM users WHERE username = ? OR email = ?;"); 

或者,你可以改變public $connglobal $conn。那麼你將不需要做出上述改變。

+0

我試圖改變public'''到global',它說'解析錯誤:語法錯誤,意想不到的'全球'(T_GLOBAL),期待函數(T_FUNCTION)',有什麼區別? – Maometto

+0

當我使用第一個解決方案時,我得到了'致命錯誤:調用成員函數prepare()null' – Maometto

+0

你甚至在你的類文件中包含db連接文件嗎? – Akshay

0

嘗試使用$this->conn->prepare代替$ conn->準備 和適當的連接對象應傳遞給構造

+0

相同'致命錯誤:調用成員函數prepare()null' – Maometto

+0

您需要傳遞適當的連接對象$ conn。像$ marwa = new merwaa_login($ conn)其中$ conn是之前設置的連接對象 – haseeb

+0

我做了'$ login = new merwaa_login($ conn);' – Maometto

相關問題