Mysqli_fetch_array()不检索任何东西


mysqli_fetch_array() retrieves nothing

我有一个简单的数据库表"帐户",有3个条目:'用户','通行证'和'ID'。ID为整数

我正在尝试从表中检索ID并将其存储到$_SESSION[' ID ']中,但是我没有运气。

代码如下:

session_start();  
// Checks to see if the input account is valid
$result = mysqli_query($con,"SELECT * FROM accounts 
 WHERE user='$_POST[user]'
 AND pass='$_POST[pass]'");
//Check to see if account exists
if(!mysqli_fetch_array($result))
  {
    $_SESSION['loggedin'] = false;
  }
else
  {
    $_SESSION['loggedin'] = true;
    $_SESSION['user'] = $_POST['user'];
    $id = mysqli_fetch_array($result);
    $_SESSION['id'] = $id['ID'];
    echo $_SESSION['id'];
  }
 //header('Location: index1.php/');
?>

echo $_SESSION['id']没有输出。我试着回显$id[' id ']本身,它也不工作。

在我的index1.php页面上,我确实设法用相同的代码位检索信息,除了$result不使用WHERE和and子句的选择语句。

实际上是获取前两行(每次调用mysqli_fetch_array()获得一行结果),这可能不是您想要的。只获取一次并重用结果:

// ...
//Check to see if account exists
$row = mysqli_fetch_array($result);
if(!$row)
  {
    $_SESSION['loggedin'] = false;
  }
else
  {
    $_SESSION['loggedin'] = true;
    $_SESSION['user'] = $_POST['user'];
    $_SESSION['id'] = $row['ID'];
    echo $_SESSION['id'];
  }
// ...

正如在注释中提到的,您的代码对SQL注入非常开放。仔细阅读准备好的语句来防止这种情况,或者手动清理变量(不建议这么做!)。

似乎您正在两次获取数据:一次在if语句中,一次在else中。

//Check to see if account exists
if($id!=mysqli_fetch_array($result))
  {
    $_SESSION['loggedin'] = false;
  }
else
  {
    $_SESSION['loggedin'] = true;
    $_SESSION['user'] = $_POST['user'];
    $_SESSION['id'] = $id['ID'];
    echo $_SESSION['id'];
  }

或:

//Check to see if account exists
if(!$result)
  {
    $_SESSION['loggedin'] = false;
  }
else
  {
    $_SESSION['loggedin'] = true;
    $_SESSION['user'] = $_POST['user'];
    $id = mysqli_fetch_array($result);
    $_SESSION['id'] = $id['ID'];
    echo $_SESSION['id'];
  }