首页 > 解决方案 > 从数据库中提取自动增量到 php var

问题描述

<?php
session_start();
include ("dbconnectie.php");
if(isset($_SESSION['on'])) {
header("location:homepage.php"); }
if(isset($_POST['login'])) {
      $username = $_POST['username'];
      $password = sha1($_POST['password']);
      $query = $db->prepare("SELECT * FROM account
                            WHERE username = :user
                            AND password = :pass"); 
      $query->bindParam("user", $username);
      $query->bindParam("pass", $password);
      $query->execute();
      $result = $query->fetchALL(PDO::FETCH_ASSOC);
      $id1 = $result['id_u'];
      if($query->rowCount() == 1) {
      $_SESSION['on'] = $username;
      $_SESSION['id_u'] = $id1;
      header("location:homepage.php");
      } else {
        echo "The username and password do not match";
      }
        echo "<br>";
    }
?>

在第 12 行,我试图从“帐户”表中选择自动增量 id_u。但取而代之的是它给了我一个错误说:

注意:未定义索引:第 16 行 /storage/ssd2/719/5658719/public_html/signin.php 中的 id_u

警告:无法修改标头信息 - 标头已由第 20 行 /storage/ssd2/719/5658719/public_html/signin.php 中的(输出开始于 /storage/ssd2/719/5658719/public_html/signin.php:16)发送

我无法理解为什么

标签: php

解决方案


您正在尝试在执行查询之前分配: $id1 = $query['id_u'];

尝试移动之后$query->execute();

尝试这个:

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

if(isset($_SESSION['on'])) {
  header("location:homepage.php"); }

if(isset($_POST['login'])) {
  $username = $_POST['username'];
  $password = sha1($_POST['password']);
  $query = $db->prepare("SELECT * FROM account
                        WHERE username = :user
                        AND password = :pass"); 
  $query->bindParam("user", $username);
  $query->bindParam("pass", $password);
  $query->execute();

  $result = $query->fetch(PDO::FETCH_ASSOC);
  $id1 = $result['id_u'];

  if($query->rowCount() == 1) {
    $_SESSION['on'] = $username;
    $_SESSION['id_u'] = $id1;
    header("location:homepage.php");
  }
  else {
    echo "The username and password do not match";
  }
    echo "<br>";
}
?>

推荐阅读