PHP Form добавляет пустую строку в базу данных каждый раз, когда я обновляю страницу - PullRequest
0 голосов
/ 26 апреля 2018

Я создал простую форму в PHP, чтобы я мог добавить отправленные данные в базу данных. Соединение работает нормально, но каждый раз, когда я обновляю страницу формы, она добавляет пустую строку в базу данных. Также отображается сообщение об ошибке « Неопределенный индекс: Fname в C: \ xampp \ htdocs \ projekt \ submitform.php в строке 38 »

Вот код, который я написал до сих пор:

<?php include 'config.php'; ?>

<?php

$Fname = isset($_POST['Fname'])?$_POST['Fname']:'';
$Lname = isset($_POST['Lname'])?$_POST['Lname']:'';
$Email = isset($_POST['Email'])?$_POST['Email']:'';
$PhoneNo = isset($_POST['PhoneNo'])?$_POST['PhoneNo']:'';


$query = "INSERT INTO users(Fname,Lname,Email,PhoneNo) VALUES ('$Fname','$Lname','$Email','$PhoneNo')";
$result = mysqli_query($con,$query) or die ("problem inserting data into database");

?>
<p><span class="error">* required field</span></p>

<form action = "" method = "post">
Name: <input type = "text" name = "Fname">
<span class=error>*</span><br>
Surname: <input type="text" name="Lname">
<span class=error>*</span><br>
Email: <input type = "email" name = "Email">
<span class=error>*</span><br>
Phone Number: <input type = "tel" name="PhoneNo"><br>
<input type = "submit" value="submit">
</form>

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Вы должны «прослушать» запрос на публикацию и только затем вставить значения.

<?php
    if(isset($_POST['submit'])) {
        $Fname = $_POST['Fname'];
        $Lname = $_POST['Lname'];
        $Email = $_POST['Email'];
        $PhoneNo = $_POST['PhoneNo'];


        $query = "INSERT INTO users(Fname,Lname,Email,PhoneNo) VALUES ('$Fname','$Lname','$Email','$PhoneNo')";
        $result = mysqli_query($con,$query) or die ("problem inserting data into database");

    }
?>

Эта ошибка, которую вы получили, говорила, что набор данных для записи не задан.

Обратите вниманиечто прямое использование входных данных для SQL представляет огромную угрозу безопасности!Вы должны по крайней мере использовать mysqli и mysqli_real_escape_string($Fname) при хранении входных данных.

Еще более безопасным было бы использование PDO и подготовленного оператора .

0 голосов
/ 26 апреля 2018

вам нужно проверить, есть ли переменные POST, как это:

if (isset($_POST['Fname'])) { //here you can check whatever post values you want to check
   $Fname = $_POST['Fname'];
   $Lname = $_POST['Lname'];
   $Email = $_POST['Email'];
   $PhoneNo = $_POST['PhoneNo'];


   $query = "INSERT INTO users(Fname,Lname,Email,PhoneNo) VALUES 
   ('$Fname','$Lname','$Email','$PhoneNo')";
   $result = mysqli_query($con,$query) or die ("problem inserting data into 
   database");
}

Потому что каждый раз, когда вы посещаете страницу, она пытается вставить запись, но вам нужно вставлять запись, только если есть значения записи (означает, что кто-то, как заполнить форму)

, поэтому вам нужно проверить, приходит ли обновление из формы отправить

...