而循环不返回结果 PHP/MySQL


while loop not returning results PHP/MySQL

昨晚它工作正常,现在我正在undefined errors来自数据库的所有变量。如果我在while循环后回显变量,它们就在那里,但是一旦它们命中if,我就会得到未定义的错误。

   <?php 
   session_start();
   include "connect.php";
   include "report_errors.php";
    $name = $_POST['name'];
    $password = $_POST['password'];

    $sql = $db->prepare("SELECT * FROM admin where username = :name AND 
            password = :password");
    $sql->bindValue(':name', $name);
    $sql->bindValue(':password', $password);
    $sql->execute();
   while($row = $sql->fetch())
   {
   $dbname = $row['username'];
   $dbpass = $row['password'];
   $dbemail = $row['email'];
   }
       if($name == $dbname && $password == $dbpass)
       {
         $_SESSION['loggedin'] = "yes";
         $_SESSION['name'] = $name;
         $_SESSION['pass'] = $password;
         $_SESSION['email'] = $dbemail;
         $url = "Location: yackimo_register_form.php";
         header($url);
         exit;
     }
         if($name == $dbname && $password != $dbpass)
           {
         $error = "invalidPassword";
         $url = "Location: login.php?error=$error";
         header($url);
         exit;
            }

您在哪些变量上遇到错误?似乎您的问题可能是您没有使用 SQL 返回任何结果 - 因此没有设置变量。

因此 - 将 SQL 循环之前的变量设置为空白或其他内容:

$dbname = null;
$dbpass = null;
$dbemail = null;
-

-edit-- 或者只是把你的if语句放在你的while循环中(如果你只期望最多一个结果......