php; mysql; Как вставить user_id или date_created?

Я сделал простую форму регистрации. Как мне отредактировать эту форму, чтобы добавить что-то вроде: user_id или date_created? Когда я добавляю столбец user_id в PHPMyAdmin, пользователь не может зарегистрироваться, но когда у меня есть только значения: «Имя»; 'Фамилия' ; 'Эл. адрес' ; «Пароль» внутри базы данных, все работает.

    <!DOCTYPE html>
<html>
<head>
    <title>Registration</title>
</head>
<body>
<?php
$lclhost = "localhost";
$pass = "";
$root = "root";
$database = "regis";
$con=mysqli_connect ("$lclhost", "$root", "$pass") or die("connection fail".mysql_error());
mysqli_select_db($con, $database) or die("database fail".mysql_error());
?>
<form method="get">
    First Name : <input type="text" name="fname"><br>
    Last Name : <input type="text" name="lname"><br>
    Email: <input type="text" name="email"><br>
    Password: <input type="Password" name="password">
    <input type="submit" name="btnsubmit">
</form>
<?php 
if (isset($_GET['btnsubmit']))
{
    $fname = $_GET['fname'];
    $lname = $_GET['lname'];
    $email = $_GET['email'];
    $password = $_GET['password'];
    $registration = "INSERT INTO tbl_info values ('".$fname."','".$lname."','".$email."','".$password."')";
    mysqli_query($con,$registration);
    echo "Succes!";
}
?>
</body>
</html>

person Nicolae    schedule 20.03.2017    source источник
comment
Является ли ваш идентификатор автоинкрементом?   -  person Ashwin Golani    schedule 20.03.2017
comment
добавление столбца user_id в базу данных делает код неработающим просто потому, что этому полю также требуется значение. что вы должны сделать, так это добавить поле user_id в представление html и отправить его вместе с остальными входными данными.   -  person Semi-Friends    schedule 20.03.2017
comment
Ваш скрипт подвержен риску атаки SQL-инъекции. Посмотрите что случилось с Little Bobby Tables Даже если вы экранируете входные данные, это небезопасно! Используйте подготовленные параметризованные операторы   -  person RiggsFolly    schedule 20.03.2017


Ответы (1)


Поскольку в вашем запросе не указаны столбцы, mysql будет работать только в том случае, если количество значений столбцов, которые вы указали, точно совпадает с количеством столбцов в базе данных.

Добавление дополнительного столбца в базу данных приведет к сбою запроса, поскольку количество столбцов уже не то же самое.

У вас есть два варианта:

ВАРИАНТ 1. Добавьте имена столбцов в свой запрос:

 "INSERT INTO tbl_info(Firstname, Lastname, EmailAddress, Password)   
  values ('".$fname."','".$lname."','".$email."','".$password."')";  

ВАРИАНТ 2. Всегда следите за тем, чтобы количество столбцов в базе данных точно соответствовало количеству значений, которые вы предоставляете в своем запросе.

Примечание. Если у вас есть поле идентификатора с автоматическим увеличением, вам не нужно включать его для первого варианта, потому что оно будет автоматически добавлять значение всякий раз, когда вы вставляете запись. Но вам нужно включить его для второго варианта, передать пустую строку или ноль в качестве значения

person Luthando Ntsekwa    schedule 20.03.2017