MySQLi注册表单将$ password插入数据库但不是真正的密码

时间:2018-04-04 15:03:46

标签: php mysqli

我没有在标题中解释我的问题,所以让我再试一次,这是我的注册表(我希望它保持非常简单,而且在MySQLi中也不是PDO或其他)。

<?php

require('library/sql/db.php');

if (isset($_POST['submit'])) {
    $username = mysqli_real_escape_string($db, $_POST['username']);
    $password = mysqli_real_escape_string($db, $_POST['password']);
    $h_password = password_hash($password, PASSWORD_DEFAULT);

    if (mysqli_query($db, 'INSERT INTO users (username, password) VALUES ( "$username","$h_password")')) {
        echo 'Registered';
    } else {
        echo 'Error';
    }
}

现在是数据库,

This is what values the php code inserts in the sql

解决这个问题的方法是什么?我尝试过任何我能在网上找到的东西。 感谢。

编辑:哦,我也尝试将“”换成'',就像这样:

<?php
require('library/sql/db.php');

if(isset($_POST['submit']))
{
    $username = mysqli_real_escape_string($db, $_POST['username']);
    $password = mysqli_real_escape_string($db, $_POST['password']); 
    $h_password = password_hash($password, PASSWORD_DEFAULT);

    if(mysqli_query($db, "INSERT INTO users (username, password) VALUES ( '$username', '$h_password')")) 
    {
        echo 'Registered';
    }else{
        echo 'Error';
    }
}

1 个答案:

答案 0 :(得分:1)

这是因为单引号'字符串不会转义php变量。所以,改成它:

if(mysqli_query($db, "INSERT INTO users (username, password) VALUES ( '{$username}','{$h_password}')")) 

注意:请使用预先准备好的语句Read More