PHP - 查询将数据插入数据库

时间:2018-02-09 15:47:02

标签: php mysqli

我一直在创建注册系统,我的代码不会在我的数据库中插入字段:firstnamelastnameemailusername,但它会将散列密码插入我的数据库。我认为这个问题可能与for循环有关,但对我而言似乎应该有效。

<?php
if (isset($_POST['submit'])){
    require_once 'config.php';
        $hashed_password = password_hash($_POST["password"], PASSWORD_DEFAULT);
        $fields = ['firstname', 'lastname', 'email', 'username'];
        $escaped_values = [];
        foreach($fields as $field){
            $escaped_values[$field] = mysqli_real_escape_string($connect, $_POST['$field']);
        }
        $sql = "INSERT INTO users (firstname, lastname, email, username, password) VALUES ('{$escaped_values["firstname"]}', '{$escaped_values["lastname"]}', '{$escaped_values["email"]}', '{$escaped_values["username"]}', '$hashed_password')";
        mysqli_query($connect, $sql);
}
?>

1 个答案:

答案 0 :(得分:1)

我相信你的错误就在这一行:

$escaped_values[$field] = mysqli_real_escape_string($connect, $_POST['$field']);

您应$field使用$_POST[] $escaped_values[],方法与$escaped_values相同,特别是删除单引号。

现在循环正在每次循环时将$ field作为文字字符串读取,这很可能不存在,给你一个空的{{1}}数组