2014-12-20 56 views
0

假設我有這樣的PHP代碼上:SQL - 致命錯誤:調用一個成員函數bind_param()非對象

$emailCheck = $_POST['emailCheck']; 
    echo "Checking: " . $emailCheck; // Checking: [email protected] 
    var_dump($stmt); 
    $sql = "SELECT id, email FROM members WHERE email=?"; 
    $stmt = $mysqli->prepare($sql); 
    $stmt->bind_param("s", $emailCheck); 
    $stmt->execute(); 
    $stmt->bind_result($m_id, $m_email); 
    $stmt->execute(); 

和我的數據庫:

enter image description here

你可以看到,我可以從PHPMyAdmin獲得它。然而,PHP頁面是另一回事,因爲我得到:

Fatal error: Call to a member function bind_param() on a non-object in...

違例的線是:

$sql = "SELECT id, email FROM members WHERE email=?"; 

我在做什麼錯?

謝謝。

一旦這樣var_dump($stmt);,我得到:

object(mysqli_stmt)[4] 
    public 'affected_rows' => null 
    public 'insert_id' => null 
    public 'num_rows' => null 
    public 'param_count' => null 
    public 'field_count' => null 
    public 'errno' => null 
    public 'error' => null 
    public 'error_list' => null 
    public 'sqlstate' => null 
    public 'id' => null 

編輯:儘管是作爲描述性的,因爲我可以我得到downvoted。優雅。

+0

@ usermesam0023 ...是的。上面的圖片顯示...... –

+0

嘗試轉儲$ stmt的值?我想你可能會在那裏變得虛假。 – SMA

+0

你從不測試你的準備失敗 - 'if($ stmt = $ mysqli-> prepare(...)){$ stmt-> bind_param(...); ...} else {printf(「錯誤信息:%s \ n」,$ mysqli-> error); }' – Sean

回答

3

請確保您的MySQL連接是$mysqli->stat()確定。

1

$stmt可能是錯誤的。

試試這個代碼:

$emailCheck = $_POST['emailCheck']; 
    echo "Checking: " . $emailCheck; // Checking: [email protected] 
    $sql = "SELECT id, email FROM members WHERE email=?"; 
    if ($stmt = $mysqli->prepare($sql)) { 
     $stmt->bind_param('s', $emailCheck); 
     $stmt->execute(); 
     $stmt->bind_result($m_id, $m_email); 
     $stmt->execute(); 
    } 
    else { 
     printf("Errormessage: %s\n", $mysqli->error); 
    } 
+0

如果使用「s」,那麼生成的查詢將如下所示: 「SELECT id,email from members WHERE email =」s「」; - 這在mysql中出現錯誤。 –

相關問題