Jump to content

PHP query to insert data into mysql database


zestyy99

Recommended Posts

I have been creating a registration system, and my code will not insert the fields: "firstname", "lastname", "email", "username" into my database however it will insert the hashed password into my database. I think the problem might have something to do with the for loop, but to me it seems like it should work.

<?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);
        // send email
        $emailRecipient = $_POST["email"];
        $subject = 'Welcome!';
        $message_body = 'You have successfully created an account ' . $_POST["username"] . '! Welcome.';
        mail($emailRecipient, $subject, $message_body);
}
?>
Link to comment
Share on other sites

Hello, 

 

 

This line is off: 

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

You don't want to pass in a variable into single quotation marks.  It looks like you would like to just do: 

$escaped_values[$field] = mysqli_real_escape_string($connect, $_POST[$field]);
Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.