【问题标题】:I have a problem while selecting all rows in MySQL选择 MySQL 中的所有行时出现问题
【发布时间】:2020-03-02 10:57:03
【问题描述】:

我对 PHP 非常陌生,我正在尝试使用 MySQL 制作一个登录系统。我有一个用户注册的表单,它保存在一个名为 registers 的数据库表中。我已经有登录验证和所有这些东西。当只有一个用户注册时,它可以完美运行。但是当另一个用户注册时,SELECT 事物只选择了第一个 ro(第一个用户的 pw),因此第二个用户无法登录,因为 SELECT 不包括表的所有行。这是我的代码:

包括'cn.php';

    if ($_SERVER["REQUEST_METHOD"] == "POST") {

        $user = htmlspecialchars($_REQUEST["user"]);
        $u_password = htmlspecialchars($_REQUEST["password"]);
        $qry = "SELECT user, password FROM registers";
        $result = mysqli_query($conexion, $qry);
        $row = mysqli_fetch_array($result);

        $db_user = $row["user"];
        $db_password = password_verify($u_password, $row["password"]);

        if($u_password == $db_password) {
            echo "<script>alert('You are in')</script>";
        } else {
            echo "<script>alert('Error')</script>";
        }

    }

我的问题是:如何选择寄存器中的所有行,因为 select 只检测第一行,在这种情况下是第一个注册用户?

【问题讨论】:

标签: php mysql database authentication select


【解决方案1】:

在您的 MYSQL 查询中,您需要指定要从 MySQL 中提取的用户名行。由于您没有指定用户名,它只是提取您怀疑的第一行。

代替:

$qry = "SELECT user, password FROM registers";

使用这个:

$username_requested = mysqli_real_escape_string($conexion, $_REQUEST["user"]);
$qry = "SELECT user, password FROM registers where `user`='username_requested'";

【讨论】:

    猜你喜欢
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多