2016-09-26 12 views
-3

我試圖測試我的登錄頁面,因此當我登錄時應該重定向到我的賬戶頁面,但我得到這個錯誤致命錯誤:調用未定義的方法mysqli_result :: fetch()在第12行C: wamp www ......

Fatal error: Call to undefined method mysqli_result::fetch() in C:\wamp\www...... on line 12

這裏是針對的login.php頁面

<?php require ("connections/Connection.php"); ?> 
<?php 

if(isset($_POST['Login_Button'])) { 

    session_start(); 
    $Email = $_POST['Email']; 
    $Password = $_POST['Password']; 

$result = $Conn->query("Select UserID FROM users WHERE Email='$Email' AND Password='$Password'"); 

    while ($num_rows = $result->fetch(MYSQLI_BOTH)); 

{ 

session_start(); 

    $_SESSION["UserID"] = $num_rows['UserID']; 

     header('Location: Account.php'); 

    } 
} 
?> 

<!doctype html> 
<html> 
<head> 
<link href="assets/css/Master.css" rel="stylesheet" type="text/css" /> 
<link href="assets/css/Menu.css" rel="stylesheet" type="text/css" /> 
<meta charset="utf-8"> 
<title>Template</title> 
</head> 

<body> 
<div class="Container"> 
    <div class="Header"></div> 
    <div class="Menu"> 
     <div id="Menu"> 
      <nav> 
       <ul class="cssmenu"> 
        <li><a href="#">Register</a></li> 
        <li><a href="#">LogIn</a></li> 
       </ul> 
      </nav> 
     </div> 
</div> 
    <div class="LeftBody"></div> 
    <div class="RightBody"> 
      <form action="" method="post" name="LoginForm" id="LoginForm"> 
       <div class="FormElement"> <input name="Email" type="email" required="required" class="TField" id="Email" placeholder="Email"> </div> 
       <div class="FormElement"> <input name="Password" type="password" required="required" class="TField" id="Password" placeholder="Password"> </div>     
       <div class="FormElement"> <input name="Login_Button" type="submit" class="button" id="Login_Button" value="Login"> </div> 
     </form> 
    </div> 
    <div class="Footer"></div> 
</div> 
</body> 

這裏我的源代碼是我connection.php(mysqli的連接代碼)

<?php 

$dbhost = "localhost"; 
$dbuser = "root"; 
$dbpass = ""; 
$dberror1 = "Could Not Connect to Your Database"; 
$dberror2 = "Could Not Find Your Table"; 

$Conn = mysqli_connect($dbhost, $dbuser, $dbpass) or die ($dberror1); 

$Select_db = mysqli_select_db($Conn, 'users') or die ($dberror2); 

$query = mysqli_query($Conn, "Select * FROM users"); 

$num_rows = mysqli_num_rows($query); 

if($num_rows != 0){ 

while ($fetch = mysqli_fetch_assoc($query)){ 

echo $fetch['UserID']; 
} 
} 

?> 

有人可以幫忙嗎?

+0

具體是指http://stackoverflow.com/a/12769983/476 – deceze

+0

**切勿將普通文本密碼!**請使用PHP的[內置函數](http://jayblanchard.net/proper_password_hashing_with_PHP.html)來處理密碼安全性。如果您使用的PHP版本低於5.5,則可以使用'password_hash()'[兼容包](https://github.com/ircmaxell/password_compat)。確保你*** [不要越獄密碼](http://stackoverflow.com/q/36628418/1011527)***或在哈希之前使用其他任何清理機制。這樣做*更改密碼並導致不必要的附加編碼。 –

回答

1

你缺少的SQL查詢一個逗號:

$result = $Conn->query("Select * FROM users WHERE 
Email='$Email' AND Password='$Password"); 

應該是:

$result = $Conn->query("Select * FROM users WHERE 
Email='$Email' AND Password='$Password'"); 

因爲這個查詢失敗,$result的是false,這意味着fetch()也將失敗。一般來說,在繼續之前,您應該檢查$result是否有效。

還要考慮逃離電子郵件地址和密碼,如果你不想做Bobby Table打破你的數據庫:)

+0

<?php require(「connections/Connection.php」); ?> query(「選擇UserID FROM users WHERE Email ='$ Email'AND Password ='$ Password'」); \t \t while($ num_rows = $ result-> fetch(MYSQLI_BOTH)); { \t session_start(); \t \t $ _SESSION [「UserID」] = $ num_rows ['UserID']; \t \t \t header('Location:Account.php'); \t \t} \t} >現在我得到調用未定義的方法mysqli_result ::獲取()在 –

+0

謝謝大家,得到一個新的類型的錯誤,現在致命錯誤:調用未定義的方法mysqli_result :: fetch()方法中C:\ wamp \ www \ ......在第12行 –

相關問題