2014-02-28 35 views
-2

我得到一個PHP致命錯誤:調用一個成員函數準備()一個非對象在/Config/functions.php上線30錯誤製備()非對象上與MySQL

的functions.php

function login($email, $password, $mysqli) { 


if ($stmt = $mysqli->prepare("SELECT * 
    FROM users 
    WHERE email = ? 
    LIMIT 1")) { 
    $stmt->bind_param('s', $email); 
    $stmt->execute(); 
    $stmt->store_result(); 

的$ mysqli的是從另一個文件中的常量已被列入

if (login($email, $password, $mysqli)  == true) { 
    // Login success 
    header('Location: ../protected_page.php'); 
} else { 
    // Login failed 
    header('Location: ../login.php?error=1'); 
} 
+0

其中是$ mysqli的初始化! –

+0

如果'$ mysqli'只是一個文件中的變量而不是類變量,那麼您可以在函數內部刪除像'global $ mysqli;'這樣的函數在函數的第一行 – Minhaz

回答

-1

你的意思是這樣得到它的數據嗎?

// Contents of constants.php 
define("HOST", "localhost"); 
define("USER", "root"); 
define("PASS", "pass"); 
define("DATABASE", "test"); 
// End of constants.php 

include('constants.php'); 
$mysqli = new mysqli(HOST, USER, PASS, DATABASE); 

function login($email, $password) 
{ 
    if ($stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ? LIMIT 1")) 
    { 
     $stmt->bind_param('s', $email); // Bind "$email" to parameter. 
     $stmt->execute(); // Execute the prepared query. 
     $stmt->store_result(); 
    } 
} 
+0

哦,不,即使他並不是指這樣一個可怕的實現它連接到一個數據庫的每個函數調用 –

+0

複製粘貼錯誤,當然連接調用不能在功能 – prepared

+0

'*嘆*'現在你做得比在問題 –