-1

昨晚它工作正常,现在我得到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;
            }
4

1 回答 1

0

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

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

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

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

于 2013-10-29T00:40:14.683 回答