Php 我的查询不起作用

Php 我的查询不起作用,php,database,Php,Database,我正在制作一个连接到数据库的登录脚本,但是我得到了一个 未定义变量:中的dbUsername 第21行的F:\xamp\register\login\functions.php 我进一步检查了一下,发现我的查询不起作用,你们能帮我吗 if (isset($_POST['sub'])) { include_once("Connect.php"); $username = strip_tags($_POST['username']); $password = strip_t

我正在制作一个连接到数据库的登录脚本,但是我得到了一个

未定义变量:中的dbUsername 第21行的F:\xamp\register\login\functions.php

我进一步检查了一下,发现我的查询不起作用,你们能帮我吗

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


 include_once("Connect.php");

    $username = strip_tags($_POST['username']);
    $password = strip_tags($_POST['password']);

      $sql = "SELECT id, username, password FROM login WHERE username = '$username' LIMIT 1";

      $query = mysqli_query($dbcon, $sql);

      if ($query) {
        $row = mysqli_fetch_row($query);
        $userId = $row[0];
        $dbUsername = $row[1];
        $dbPassword = $row[2];
      }
      if ($username == $dbUsername && $password == $dbPassword) {
        $_SESSION['username'] = $username;
        $_SESSION['id'] = $userId;
        header('location: login.php');
      } else {
        echo "incorrect username or password.";

      }
    }
如果$query为false,则不会设置$dbUsername和$dbPassword

设置$dbUsername=null$dbPassword=null;在你的if声明之前

将Where查询更新到此位置:

"WHERE username = '. $username .'

您需要在if$查询中使用您的条件,但我认为不需要重新检查,因为您已经在username=$username的查询中进行了检查。因此,我将您的代码修改为:

修改代码:


$dbUsername是在哪里定义的?此查询在概念上是错误的。由于某些原因,我无法发布它。因为它的查询不是qeury…:请阅读相关文章。永远不要将密码直接存储在数据库中。谢谢,但它现在不起作用。它说:警告:mysqli_num_rows期望参数1是mysqli_result,布尔值在F:\xamp\register\login\functions.php中给出14@Furkanyavuz:bro,意思是你的查询有错误。因为它的返回是错误的。。。。chk更新答案。。。或者使用$query=mysqli_query$dbcon、$sql或diemysqli_error$dbcon;将获得错误。@Furkanyavuz一些调试提示,。使用print\u r$\u POST;你得到了什么。。。。第二,在phpmyadmin中运行此查询手册。。。从登录名中选择id、用户名、密码,其中用户名=‘您的用户名’限制1我已将错误的数据库表链接到我的$sql。问题解决谢谢您的帮助:@Furkanyavuz:很高兴知道它的解决方法,我给您兄弟的建议,提高您的调试技能,它将在将来帮助您。逐行调试,使用错误报告。。等:
  $sql = "SELECT id, username, password FROM login WHERE username = '$username' LIMIT 1";
  $query = mysqli_query($dbcon, $sql);
  if (!$query) {
    die(mysqli_error($dbcon));
  }
  else
  {
    $count = mysqli_num_rows($query); // check total no of rows

    if ($count > 0) 
    {
        session_start(); // start session
        $row = mysqli_fetch_row($query);
        $userId = $row[0]; // get userid from database
        $dbUsername = $row[1]; // get username from database
        $_SESSION['username'] = $dbUsername;
        $_SESSION['id'] = intval($userId);
        header('location: login.php');    
        die(); // using die() after header()
    }
    else{
        echo "incorrect username or password."; // if query not return anything print this.
    }  
  }