php - 无法从 MySQL 表中检索数据

标签 php mysql sql

首先,我是 php 新手。我也是 MySQL 新手,所以请温柔对待我。其次,我知道 mysql_* 已被贬值,一旦我了解更多,这将在稍后修复。

所以我有以下代码:

        if(isset($_POST['email']) && !empty($_POST['email']) AND isset($_POST['password']) && !empty($_POST['password'])){
            $email = mysql_escape_string($_POST['email']);
            $password = mysql_escape_string($_POST['password']);

            $search = mysql_query("SELECT * FROM users WHERE email='".$email."' AND password='".$password."' AND active='1'") or die(mysql_error()); 
            $match  = mysql_num_rows($search);

            if($match > 0){
                $user=$search['forename'] .' '.$search['surname'];
                $_SESSION['username']=$user;
                $msg = 'Login Complete! Thanks, '.$user.'!';
            }else{
                $msg = 'Login Failed!<br /> Please make sure that you enter the correct details and that you have activated your account.';
            }
        }

很简单,我正在检查电子邮件和密码是否匹配(我知道这不是散列密码......同样,这不是问题,因为它是测试)。如果他们这样做,并且帐户已被激活,那么我想返回用户的名字和姓氏(用户表中的名字/姓氏)并将它们存储在 session 变量中。如果设置了该变量,我想使用此信息来确认用户已登录(因此可以访问某些页面)。但是,此测试不会返回用户名,而是输出:

Login Complete! Thanks, !

如有任何帮助,我们将不胜感激。

最佳答案

请记住,mysql_query 返回的值是资源,因此您需要以关联数组的形式获取结果行。

while ($row = mysql_fetch_assoc($search)) 
{
    $user=$row['forename'] .' '.$row['surname'];
    $_SESSION['username']=$user;
}

作为旁注,该查询容易受到 SQL Injection 的影响。如果变量的值(s)来自外部。请查看下面的文章,了解如何预防这种情况。通过使用 PreparedStatements,您可以摆脱在值周围使用单引号的情况。

关于php - 无法从 MySQL 表中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15114109/

相关文章:

mysql - 将日期时间从 MySQL 表转换为 ISO8601,以在 WordPress 中创建 JSON 源以与 FullCalendar 一起使用

MySQL从多个表中选择+来自其他地方的最后一行

MySQL - 顺序查询并在顶部显示随机一行

php - SQL 建议 - 从表中选择多行作为内部联接

javascript - 过滤标记谷歌地图

php - PHP/Ajax 脚本中的 Order By 语法问题

php - mysqli错误fetch_assoc()

javascript - 需要检查与点击元素相关的隐藏输入字段的值(多个同名)

php - 如何在 slim 框架 v4 中添加 twig-view

php - 在显示提交按钮的文本区域输入时