2017-09-17 63 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

相关问题