2016-06-21 122 views
0
public function getUserByEmailAndPassword($email, $password) { 

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

    $stmt->bind_param("s", $email); 

    if ($stmt->execute()) { 
     $user = $stmt->bind_result($name,$email); 
     while($user->fetch_assoc()) 
     { 
     echo $name. "<br>" .$email; 
     } 
     $stmt->close(); 

     // verifying user password 
     $salt = $user['salt']; 
     $encrypted_password = $user['encrypted_password']; 
     $hash = $this->checkhashSSHA($salt, $password); 
     // check for password equality 
     if ($encrypted_password == $hash) { 
      // user authentication details are correct 
      return $user; 
     } 
    } else { 
     return NULL; 
    } 
} 

錯誤: - java.lang.String類型的值BR不能轉換爲JSONObject在Error screenshot Android 請幫我找出這個錯誤 謝謝你提前。呼叫一個成員函數FETCH_ASSOC()一個非對象在<b>/home/u728597044/public_html/android_login_api/include/DB_Functions.php</b>

enter image description here

+0

try: boolean error = Boolean.parseBoolean(jObj.getString(「error」)); –

+0

爲什麼你使用bind_result而不是get_result? 而在錯誤中,您可以看到bind_result中的參數與Users表中的字段數不匹配。 Users表中有什麼? – M4R1KU

+0

在用戶表中我有ID唯一的ID名稱密碼電子郵件創建和更新! –

回答

0

問題:bind_result警告所造成的,導致您的查詢犯規列數相匹配您在bind_result設置參數($名稱,$電子郵件)(僅2 PARAM),我認爲您的查詢結果給出大於2列。

解決方案:您必須知道您的sql SELECT *產生了多少列,然後將該參數添加到bind_result()與導致的列數完全相同。

並使用mysqli_fetch_assoc()而不是fetch_assoc()

相關問題