Я создал php-форму и подключаюсь к mysql, все мои данные добавляются в базу данных, только пол не отображается в базе данных

я создал php-форму и успешно подключил ее к mysql, я создал таблицу в mysql и добавил данные, все данные добавлены, за исключением того, что пол не отображается в базе данных, а пол 0 отображается в таблице. Второй вопрос - моя проверка не работает с формой Ниже приведен код: Вот код для подключения к базе данных и проверки:

<?php
session_start();
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$mail = $_POST['mail'];
$password = $_POST['password'];
$age = $_POST['age'];
$gender = $_POST['gender'];

//database Connection



$conn = new mysqli('localhost', 'root', '', 'codetodesign');

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else {
$stmt = $conn->prepare("insert into registration(firstName, lastName, mail, password, age, gender) 
values(?, ?, ?, ?, ?, ?)");
    $stmt->bind_param("sssssi",$firstname, $lastname, $mail, $password, $age, $gender);
    $stmt->execute();
echo "Registration successfully";
$stmt->close();
$conn->close();
}

//Validations

$firstnameErr = $lastnameErr = $mailErr = $passwordErr = $ageErr = $genderErr = "";
$firstname = $lastname = $mail = $password = $age = $gender = "";

if ($_SERVER["REQUEST_METHOD"] == "POST"){
if (empty($_POST["firstname"])){
    $firstnameErr = "Firstname is required";
} else {
    $firstname = test_input($_POST["firstname"]);
}

if (empty($_POST["lastname"])){
    $lastnameErr = "lastname is required";
} else {
    $lastname = test_input($_POST["lastname"]);
}

if (empty($_POST["mail"])){
    $mailErr = "Mail is required";
} else {
    $mail = test_input($_POST["mail"]);
}

if (empty($_POST["password"])){
    $passwordErr = "Password is required";
} else {
    $password = test_input($_POST["password"]);
}

if (empty($_POST["age"])){
    $ageErr = "Age is required";
} else {
    $age = test_input($_POST["age"]);
}

if (empty($_POST["gender"])){
    $genderErr = "Gender is required";
} else {
    $gender = test_input($_POST["gender"]);
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>

Here is the code for gender values:

<div class = "form-group">
            <label for = "gender">Gender</label>
        </div>
        <label for = "male" class = "radio-inline"><input type = "radio" name = "gender" value = "m" 
id = "male">Male</label>
        <label for = "female" class = "radio-inline"><input type = "radio" name = "gender" value = "f" 
id = "female">Female</label>
        <label for = "others" class = "radio-inline"><input type = "radio" name = "gender" value = "o" 
id = "other">Other</label>
        <button type = "submit" class = "btn btn-primary">Submit</button>
    </form>

Вы пытались var_dump($_POST) или напрямую var_dump($_POST["gender"]) посмотреть, не пусто ли?

Simone Rossaini 24.12.2020 08:55

@SimoneRossaini я сделал ошибку с запросом, я просто заменил, что я вставляю с s, и это работает, спасибо за ответ

Jawad Kiani 24.12.2020 09:13

это php, а не jquery :)

Simone Rossaini 24.12.2020 09:21

@SimoneRossaini, да, извините, это php

Jawad Kiani 24.12.2020 09:28

Помимо обрезки, то, что вы делаете в своей функции test_input, не нужно, поскольку вы используете подготовленные операторы. Они автоматически очистят ваши входные значения. Кроме того, ознакомьтесь с хешированием паролей. Хранение простых текстовых паролей — огромная дыра в безопасности.

El_Vanja 24.12.2020 11:15
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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 и хотите разрабатывать...
1
5
120
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

     if (isset($_POST["firstname"])){
if (($_POST["firstname"] = "")){
    $firstnameErr = "Firstname is required";
} else {
    $firstname = test_input($_POST["firstname"]);
}
}

советы : пожалуйста, введите свой пароль, используя функцию md5() для безопасности

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

Jawad Kiani 24.12.2020 09:29
Ответ принят как подходящий

Вы ошиблись в своем запросе, вы используете «i» с буквой. Изменять:

 $stmt->bind_param("sssssi",$firstname, $lastname, $mail, $password, $age, $gender);

в:

 $stmt->bind_param("ssssss",$firstname, $lastname, $mail, $password, $age, $gender);

Ссылка для просмотра всех символов спецификации типа: Ссылка

спасибо, приятель, твой ответ сработал для меня, я сделал ошибку с запросом, я просто заменил, что я вставляю с s, и это работает

Jawad Kiani 24.12.2020 09:12

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