【问题标题】:MySql doesn't return anythingMySql 不返回任何东西
【发布时间】:2012-09-19 20:27:00
【问题描述】:

我只是在乱用 PHP 和 MySql 来学习东西......直到现在一切都很好,但现在我找不到任何解决方案。 该基地是一个非常简单的登录系统。现在我试图从名为“login”的数据库中读取用户名和密码,其中包含表“userTBL”和字段“用户名”和“密码”。

 <?php 
    session_start();

    mysql_connect ('localhost', 'root', 'root') or die('NO MYSQL CONNECTION!');
    mysql_select_db('login');  

    if ($_GET['login']) {
        $username = ($_POST['username']);
        $password = ($_POST['password']);

        $tmp = mysql_query("SELECT * FROM `user`");

        $data = mysql_fetch_array($tmp);

        if($tmp) {
            echo 'FULL<br />';
        } else {
            echo 'EMPTY<br />';
        }

        $_SESSION['username'] = $data['username'];
        $_SESSION['password'] = $data['password'];

         if ($username == $_SESSION['username'] && $password == $_SESSION['password']) {
             $_SESSION['loggedin'] = true;
             header("Location: protected.php");
             exit;
         } else echo "Wrong details!<br />";
    }
    if ($_SESSION['loggedin'] == true) {
        header("Location: protected.php"); 
    }
?>

似乎数据库不会返回任何内容,但为什么呢?!?!

感谢您的帮助!

【问题讨论】:

  • mysql_error()检查错误
  • 如何“看起来”像数据库没有返回任何东西?此外,mysql_query()SELECT 查询返回一个资源;如果查询中没有错误,$tmp 将始终为真,即使返回的行为零。此外,请勿使用 mysql 扩展名,因为它已被弃用且不鼓励使用。
  • 你说表名是userTBL但是有"SELECT * FROM user"
  • - mysql_error() 显示任何错误消息... - 它似乎没有返回任何内容,因为 $tmp 数组是空的
  • $tmp 不是一个数组,它是一个结果资源。您的数据将位于$data

标签: php mysql session login return


【解决方案1】:

您提到您的表名为“userTBL”,但您正在查询表“用户”。将您的查询更改为: $tmp = mysql_query("SELECT * FROM userTBL WHERE username = {$username} AND password = {$password}"); 'WHERE' 子句将确保查询只返回与表单中输入的用户名和密码匹配的数据。

【讨论】:

    【解决方案2】:
        <?php 
        session_start();
    
        mysql_connect ('localhost', 'root', 'root') or die('NO MYSQL CONNECTION!');
        mysql_select_db('login');  
    
        if ($_GET['login']) {
            $username = htmlspecialchars($_POST['username']);
            $password = htmlspecialchars($_POST['password']);
    
            $tmp = mysql_query('SELECT * FROM `userTBL` WHERE `user` = "'.$username.'"');
    
            while ($data = mysql_fetch_array($tmp))
            {
                $_SESSION['username'] = $username;
                $_SESSION['password'] = $data['password'];
    
             if ($password == $_SESSION['password']) {
                 $_SESSION['loggedin'] = true;
                 header("Location: protected.php");
                 exit;
             } else echo "Wrong details!<br />";
             }
        }
        if ($_SESSION['loggedin'] == true) {
            header("Location: protected.php"); 
        }
    ?>
    

    另外:使用 salt+hash 将密码存储在数据库中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多