Данные формы не хранятся в базе данных

У меня есть HTML-форма, которая при отправке отправляет данные в createUser.php. Затем данные сохраняются в переменных и вставляются в базу данных с помощью функции enterUserData. Я var_dump массив $ _POST, и все данные там, однако они не попадают в базу данных. Я проверил орфографические ошибки, удалил семейное положение из-за того, что он был в списке данных, изменил $ _POST на $ _REQUEST, но он по-прежнему не работает. Нет и 400, и 500 ошибок. Подключение к базе данных в порядке. Я использую тот же файл connect.php в других частях программы, и они отлично работают. Мы будем благодарны за любое понимание этой проблемы.

Вот форма.

<form id = "createUserForm" class = "" action = "createUser.php" method = "POST" onsubmit = "return createUser.validateForm('createUserForm')">
<label for = "formUsername">Username: </label>
<input id = "formUsername" type = "text" required name = "Username" placeholder = "Username">
<br />
<label for = "formPassword">Password: </label>
<input id = "formPassword" type = "text" required name = "Password" placeholder = "Password">
<br />
<label for = "formFirstname">Firstname: </label>
<input id = "formFirstname" type = "text" required name = "Firstname" placeholder = "Firstname">
<br />
<label for = "formLastname">Lastname: </label>
<input id = "formLastname" type = "text" required name = "Lastname" placeholder = "Lastname">
<br />
<label for = "formFavColor">Favorite Color: </label>
<input id = "formFavColor" type = "text" name = "Favorite Color" placeholder = "Favorite Color">
<br />
<label for = "formFavMove">Favorite Movie: </label>
<input id = "formFavMove" type = "text" name = "Favorite Movie" placeholder = "Favorite Movie">
<br />
<label for = "formFavAnimal">Favorite Animal: </label>
<input id = "formFavAnimal" type = "text" name = "Favorite Animal" placeholder = "Favorite Animal">
<br />
<label for = "formFaveVideogame">Favorite Videogame:</label>
<input id = "formFaveVideogame" type = "text" name = "Favorite Videogame" placeholder = "Favorite Videogame">
<br />
<label for = "formMarital">Marital Status: </label>
<input list = "formMarital" name = "Marital Status">
<datalist id = "formMarital" type = "text" name = "" placeholder = "Marital Status">
<option value = "Single"></option>
<option value = "Married"></option>
<option value = "None of my business"></option>
</datalist>
<br />
<button id = "submitCreateUser" type = "submit" name = "button">Create User</button>
</form>

Вот файл createUser.php.

include 'loginManager.php';

function enterUserData($Username,$Password,$Firstname,$Lastname,$DateJoined,$FavoriteColor,$FavoriteMovie,$FavoriteAnimal,$FavoriteVideogame,$MaritalStatus){
  include 'connect.php';
  $query = $loginSystem->prepare("INSERT INTO users (Username,Password,FirstName,LastName,DateJoined,FavoriteColor,FavoriteMovie,FavoriteAnimal,FavoriteVideogame,MaritalStatus) VALUES ($Username,$Password,$Firstname,$Lastname,$DateJoined,$FavoriteColor,$FavoriteMovie,$FavoriteAnimal,$FavoriteVideogame,$MaritalStatus)");
  $query->execute();
}

$username = $_POST["Username"];
$password = $_POST["Password"];
$firstname = $_POST["Firstname"];
$lastname = $_POST["Lastname"];
$dateJoined = strftime('%D');
$favoriteColor = $_POST["Favorite Color"];
$favoriteMovie = $_POST["Favorite Movie"];
$favoriteAnimal = $_POST["Favorite Animal"];
$favoriteVideogame = $_POST["Favorite Videogame"];
$maritalStatus = $_POST["Marital Status"];

enterUserData($username,$password,$firstname,$lastname,$dateJoined,$favoriteColor,$favoriteMovie,$favoriteAnimal,$favoriteVideogame,$maritalStatus);

Вот файл connect.php.

$host       = "localhost";
$username   = "root";
$password   = "";
$dbname     = "login_system";

$dsn  = "mysql:host=$host;dbname=$dbname;";

$loginSystem = new PDO($dsn,$username,$password);

Ставим error_reporting (E_ALL); поверх createUser.php для отображения всех ошибок.

Michael 09.06.2018 13:18

Вы проверили, была ли вставлена ​​пустая строка в базу данных?

Ali Sheikhpour 09.06.2018 13:20

Смотрите о подготовленных и связанных запросах

Strawberry 09.06.2018 13:29

Покажи нам JS код

Rusty 09.06.2018 16:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
49
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вам нужно использовать '. Вот ваша новая функция enterUserData:

function enterUserData($Username,$Password,$Firstname,$Lastname,$DateJoined,$FavoriteColor,$FavoriteMovie,$FavoriteAnimal,$FavoriteVideogame,$MaritalStatus){
  include 'connect.php';
  $query = $loginSystem->prepare("INSERT INTO users (Username,Password,FirstName,LastName,DateJoined,FavoriteColor,FavoriteMovie,FavoriteAnimal,FavoriteVideogame,MaritalStatus) VALUES ('$Username','$Password','$Firstname','$Lastname','$DateJoined','$FavoriteColor','$FavoriteMovie','$FavoriteAnimal','$FavoriteVideogame','$MaritalStatus')");
  $query->execute();
}

попробуйте один раз следующий код: -

$dateJoined = strftime('%D'); to $dateJoined = date('Y-m-d');

И замените эту строку: -

  $query = $loginSystem->prepare("INSERT INTO users (Username,Password,FirstName,LastName,DateJoined,FavoriteColor,FavoriteMovie,FavoriteAnimal,FavoriteVideogame,MaritalStatus) VALUES ('$Username','$Password','$Firstname','$Lastname','$DateJoined','$FavoriteColor','$FavoriteMovie','$FavoriteAnimal','$FavoriteVideogame','$MaritalStatus')");

Возможно, формат даты вызвал ошибку при сохранении данных.

Думаю, подготовленное заявление должно выглядеть примерно так:

$query = $loginSystem->prepare("INSERT INTO users (Username,Password,FirstName,LastName,DateJoined,FavoriteColor,FavoriteMovie,FavoriteAnimal,FavoriteVideogame,MaritalStatus) VALUES (?,?,?,?,?,?,?,?,?,?)");

$query->bind_param("ssssssssss", $Username,$Password,$Firstname,$Lastname,$DateJoined,$FavoriteColor,$FavoriteMovie,$FavoriteAnimal,$FavoriteVideogame,$MaritalStatus);

$query->execute();

Подготовленный оператор PHP PDO

Ответ принят как подходящий

Итак, я разобрался с проблемой. В названиях некоторых текстовых полей был пробел между словами. При сборе в $ _POST PHP заменяет пробел подчеркиванием. В строках 16-20 я использовал пробел, поскольку именно так пишется имя в HTML, а не подчеркивание. Как отмечали другие, я забыл поставить '' вокруг имен переменных в подготовленном операторе. Спасибо всем, кто помогал!

Другие вопросы по теме