2017-09-17 65 views
0

我是新來的SQL,我試圖建立一個登錄系統。我已經按照指導,但是當我嘗試登錄我收到這2個消息:mysqli_fetch_array&row期望參數1是mysqli_result

警告:mysqli_fetch_array()預計參數1被mysqli_result,布爾在C中給出:\ XAMPP \ htdocs中\ loginguide /的login.php上線13

警告:mysqli_num_rows()預計參數1是mysqli_result,布爾在C中給出:\ XAMPP \ htdocs中\ loginguide \ login.php中第16行

我創建的數據庫在MyPHPAdmin,但是,我不知道如何正確地做到這一點,我的意思是將表添加到該數據庫?

這裏的login.php中代碼:

<?php 
    include("config.php"); 
    session_start(); 

    if($_SERVER["REQUEST_METHOD"] == "POST") { 
     // username and password sent from form 

     $myusername = mysqli_real_escape_string($db,$_POST['username']); 
     $mypassword = mysqli_real_escape_string($db,$_POST['password']); 

     $sql = "SELECT id FROM admin WHERE username = '$myusername' and passcode = '$mypassword'"; 
     $result = mysqli_query($db,$sql); 
     $row = mysqli_fetch_array($result,MYSQLI_ASSOC); 
     $active = $row['active']; 

     $count = mysqli_num_rows($result); 

     // If result matched $myusername and $mypassword, table row must be 1 row 

     if($count == 1) { 
     session_register("myusername"); 
     $_SESSION['login_user'] = $myusername; 

     header("location: welcome.php"); 
     }else { 
     $error = "Your Login Name or Password is invalid"; 
     } 
    } 
?> 
<html> 

    <head> 
     <title>Login Page</title> 

     <style type = "text/css"> 
     body { 
      font-family:Arial, Helvetica, sans-serif; 
      font-size:14px; 
     } 

     label { 
      font-weight:bold; 
      width:100px; 
      font-size:14px; 
     } 

     .box { 
      border:#666666 solid 1px; 
     } 
     </style> 

    </head> 

    <body bgcolor = "#FFFFFF"> 

     <div align = "center"> 
     <div style = "width:300px; border: solid 1px #333333; " align = "left"> 
      <div style = "background-color:#333333; color:#FFFFFF; padding:3px;"><b>Login</b></div> 

      <div style = "margin:30px"> 

       <form action = "" method = "post"> 
        <label>UserName :</label><input type = "text" name = "username" class = "box"/><br /><br /> 
        <label>Password :</label><input type = "password" name = "password" class = "box" /><br/><br /> 
        <input type = "submit" value = " Submit "/><br /> 
       </form> 

       <div style="font-size:11px;<?php echo $error; ?></div> 

      </div> 

     </div> 

     </div> 

    </body> 
</html> 
+0

的可能的複製[mysqli的\ _fetch \ _array()/ mysqli的\ _fetch \ _assoc()/ mysqli的\ _fetch \ _row()預計參數1是資源或mysqli的\ _result,給定的boolean( https://stackoverflow.com/questions/2973202/mysqli-fetch-array-mysqli-fetch-assoc-mysqli-fetch-row-expects-parameter-1) –

回答

1

1)你需要在你的SQL查詢中包含「active」列或者用'*'替換'id'

select * from admin where .... 
(or) 
select id, active from admin where .... 

2)檢查是否已包含在給定的例子你的config.php文件,如果DB_USERNAME,DB_PASSWORD,DB_DATABASE名稱將被賦予錯誤(語法錯誤,你可以得到該警告)。

<?php 
define('DB_SERVER', 'localhost'); 
define('DB_USERNAME', 'root'); 
define('DB_PASSWORD', 'root'); 
define('DB_DATABASE', 'testDB'); 
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE); 
?> 
-1

您只需選擇ID,並使用 「活躍」

所以,你應該解決這個問題第一:

SELECT * FROM admin WHERE username = '$myusername' and passcode = '$mypassword' 

它應該工作現在

0

我認爲你的查詢失敗並返回一個錯誤的值。檢查您的查詢,如果它工作正常,把它放在你的代碼:

$result = mysqli_query($db,$sql); 

if (!$result) { 
    printf("Error: %s\n", mysqli_error($db)); 
    exit(); 
} 

欲瞭解更多信息。

http://www.php.net/manual/en/mysqli.error.php

相關問題