У меня есть 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);
Вы проверили, была ли вставлена пустая строка в базу данных?
Смотрите о подготовленных и связанных запросах
Покажи нам JS код






Вам нужно использовать '. Вот ваша новая функция 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();
Итак, я разобрался с проблемой. В названиях некоторых текстовых полей был пробел между словами. При сборе в $ _POST PHP заменяет пробел подчеркиванием. В строках 16-20 я использовал пробел, поскольку именно так пишется имя в HTML, а не подчеркивание. Как отмечали другие, я забыл поставить '' вокруг имен переменных в подготовленном операторе. Спасибо всем, кто помогал!
Ставим error_reporting (E_ALL); поверх createUser.php для отображения всех ошибок.