2013-02-07 116 views
4

我在使用PHP中的$stmt->num_rows時遇到問題,我不確定我在做什麼錯。 $stmt->num_rows返回0時,它應該返回1.查詢確實工作並返回1結果時,它在phpMyAdmin中執行它。任何幫助將不勝感激。MySQLi stmt num_rows返回0

public function get_login($username, $password) 
{ 
    $query = "SELECT `id` FROM `users` WHERE `username` = ? AND `password` = ? LIMIT 1;"; 
    if($stmt = $this->prepare($query)) 
    { 
     $stmt->bind_param('ss', $username, $password); 
     if($stmt->execute()) 
     { 
      $stmt->bind_result($id); 
      $stmt->fetch(); 
      $stmt->store_result(); 
      if($stmt->num_rows > 0) 
      { 
       return $id; 
      } 
      return false; 
     } 
     return false; 
    } 
    return false; 
} 

回答

11

試試這個,叫store_result第一,然後fetch結果。

public function get_login($username, $password) 
{ 
    $query = "SELECT `id` FROM `users` WHERE `username` = ? AND `password` = ? LIMIT 1;"; 
    if($stmt = $this->prepare($query)) 
    { 
     $stmt->bind_param('ss', $username, $password); 
     if($stmt->execute()) 
     { 
      $stmt->bind_result($id); 
      $stmt->store_result(); 
      $stmt->fetch();   
      if($stmt->num_rows > 0) 
      { 
       return $id; 
      } 
      return false; 
     } 
     return false; 
    } 
    return false; 
} 
+0

謝謝,它的工作!你介意解釋爲什麼這需要發生?爲了對你完全誠實,我不明白爲什麼我需要在這裏使用store_result(),如果我已經獲取結果。 –

+1

如果您首先獲取數據,它將增加內部行計數器 –