使用php表单将值存储到数据库中

时间:2022-09-25 16:25:39

Final Edit: Thank you everyone for the help. I have been trying to write all the code related to connection in index.php rather than submit.php. It is resolved now.

最终编辑:谢谢大家的帮助。我一直在尝试在index.php而不是submit.php中编写与连接相关的所有代码。它现在解决了。


Edit:

编辑:

I have updated the code based on your feedback. I am able to get the values to the database now but the thing is it is showing only empty results. here is the updated code.

我已根据您的反馈更新了代码。我现在能够获取数据库的值,但事实是它只显示空结果。这是更新的代码。

 <form action="submit.php" method="post" class="form-horizontal">
                        <div class="form-group">
                            <label for="name" class ="col-lg-2 control-label" > Name</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" id ="name" name="name" placeholder="Enter your Name" required>
                            </div>
                        </div>

                </div>
             <div class="col-lg-1">

             </div>
                <div class="form-horizontal" >

                        <div class="form-group">
                            <label for="email" class ="col-lg-2 control-label" > Email</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" id ="email" name="email" placeholder="Enter your email address" required>
                            </div>
                        </div>

                </div> <div class="col-lg-1">

             </div>
                <div class="form-horizontal" >

                        <div class="form-group">
                            <label for="subject" class ="col-lg-2 control-label" > Subject</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" id ="subject" name="subject" placeholder="Your Subject" required>
                            </div>
                        </div>

                </div>
             <div class="col-lg-1">

             </div>
                <div class="form-horizontal">

                        <div class="form-group">
                            <label for="message" class ="col-lg-2 control-label" > Message</label>
                            <div class="col-lg-7">
                                <textarea name="message" class="form-control" id ="message" cols="20" rows="3" placeholder="Your Message"></textarea>
                            </div>
                        </div> <!-- end form -->
                        <div class="col-lg-1">

             </div>
                        <div class="form-group">
                            <div class="col-lg-7 col-lg-offset-2">
                            <button type="submit" name="submit" class="btn btn-primary">Submit</button>
                            </div>
                        </div>
                    </form>

PHP Code:

PHP代码:

    <?php
    if (isset($_POST)) {
    $conn = mysqli_connect($servername, $username, $password, $db_name);//             Establishing Connection with Server
    mysqli_set_charset($conn, 'utf8');
    if (!$conn) {
    die("Database connection failed: " . mysqli_error($conn));
    }
    else 
    echo "connected successfully";

//Escaping string, not 100% safe, also consider validating rules and sanitization
    $name = mysqli_real_escape_string($conn, $_POST['name']);
    $email = mysqli_real_escape_string($conn, $_POST['email']);
    $subject = mysqli_real_escape_string($conn, $_POST['subject']);
    $message = mysqli_real_escape_string($conn, $_POST['message']);
    $result = mysqli_query($conn, "INSERT INTO contact (user, email, subject, message) VALUES ('$name', '$email', '$subject', '$message')");

    }
    ?>

Here is the snapshot of the database

这是数据库的快照


I have a form made using HTML. I want to store the results when i submit the form in the database. The connection was successful but the data is not being stored in the database.

我有一个使用HTML制作的表单。我想在数据库中提交表单时存储结果。连接成功但数据未存储在数据库中。

Basically what submit.php does is just sent the text "Successfully submited the form".

基本上,submit.php所做的只是发送文本“Successfully submited the form”。

Here's my code:

这是我的代码:

<form action="submit.php" method="post" class="form-horizontal">
                        <div class="form-group">
                            <label for="name" class ="col-lg-2 control-label" > Name</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" id ="name" placeholder="Enter your Name" required>
                            </div>
                        </div>

                </div>
             <div class="col-lg-1">

             </div>
                <div class="form-horizontal" >

                        <div class="form-group">
                            <label for="email" class ="col-lg-2 control-label" > Email</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" id ="email" placeholder="Enter your email address" required>
                            </div>
                        </div>

                </div> <div class="col-lg-1">

             </div>
                <div class="form-horizontal" >

                        <div class="form-group">
                            <label for="subject" class ="col-lg-2 control-label" > Subject</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" id ="subject" placeholder="Your Subject" required>
                            </div>
                        </div>

                </div>
             <div class="col-lg-1">

             </div>
                <div class="form-horizontal">

                        <div class="form-group">
                            <label for="message" class ="col-lg-2 control-label" > Message</label>
                            <div class="col-lg-7">
                                <textarea name="message" class="form-control" id ="message" cols="20" rows="3" placeholder="Your Message"></textarea>
                            </div>
                        </div> <!-- end form -->
                        <div class="col-lg-1">

             </div>
                        <div class="form-group">
                            <div class="col-lg-7 col-lg-offset-2">
                            <button type="submit" class="btn btn-primary">Submit</button>
                            </div>
                        </div>
                    </form>

PHP code:

PHP代码:

$conn = mysqli_connect($servername, $username, $password, $db_name);//         Establishing Connection with Server
mysqli_set_charset($conn, 'utf8');
if (!$conn) {
die("Database connection failed: " . mysqli_error($conn));
}
else 
    echo "connected successfully";

if (isset($_POST['submit'])) {

//Escaping string, not 100% safe, also consider validating rules and sanitization
$name = mysqli_real_escape_string($conn, $_POST['name']);
$email = mysqli_real_escape_string($conn, $_POST['email']);
$subject = mysqli_real_escape_string($conn, $_POST['subject']);
$message = mysqli_real_escape_string($conn, $_POST['message']);
$result = mysqli_query($conn, "INSERT INTO contact (user, email, subject, message) VALUES ('$name', '$email', '$subject', '$message');");
if ($result) {
$message="successfully sent the query!!";
}
else
{$message="try again!!";}
}
 ?>

4 个解决方案

#1


1  

None of your input fields have a name="" attribute, including the button. So none of these fields will be sent in the $_POST array.

您的输入字段都没有name =“”属性,包括按钮。因此,这些字段都不会在$ _POST数组中发送。

Add a name="" attribute like this to all the fields you want sent to PHP

像这样添加name =“”属性到要发送给PHP的所有字段

<form action="submit.php" method="post" class="form-horizontal">
   <div class="form-group">
       <label for="name" class ="col-lg-2 control-label" > Name</label>
       <div class="col-lg-7">
           <input type="text" class="form-control" id ="name" name="name" placeholder="Enter your Name" required>
       </div>
    </div>

    </div>
    <div class="col-lg-1">
        </div>
        <div class="form-horizontal" >
            <div class="form-group">
                <label for="email" class ="col-lg-2 control-label" > Email</label>
                <div class="col-lg-7">
                    <input type="text" class="form-control" id ="email" name="email" placeholder="Enter your email address" required>
                </div>
             </div>
        </div> 
        <div class="col-lg-1"></div>
            <div class="form-horizontal" >
                <div class="form-group">
                   <label for="subject" class ="col-lg-2 control-label" > Subject</label>
                   <div class="col-lg-7">
                      <input type="text" class="form-control" id ="subject" name="subject" placeholder="Your Subject" required>
                   </div>
                </div>

         </div>
         <div class="col-lg-1"></div>
         <div class="form-horizontal">
             <div class="form-group">
                 <label for="message" class ="col-lg-2 control-label" > Message</label>
                 <div class="col-lg-7">
                     <textarea name="message" class="form-control" id ="message" name="message" cols="20" rows="3" placeholder="Your Message"></textarea>
                 </div>
             </div> <!-- end form -->
             <div class="col-lg-1"></div>
                <div class="form-group">
                   <div class="col-lg-7 col-lg-offset-2">
                      <button type="submit" class="btn name="submit" btn-primary">Submit</button>
                   </div>
                 </div>
       </form>

Also in your code in submit.php change this so you see an actual error message if one occurs.

另外在submit.php的代码中更改此项,以便在发生实际错误消息时看到。

if ($result) {
    $message="successfully sent the query!!";
} else {
    $message="Insert failed : " . mysqli_error($conn);
}
echo $message;

Although this does assume you are actually showing the $message value somewhere in your code that you have not shown us.

虽然这确实假设您实际上在代码中的某处显示了$ message消息,但您没有向我们展示过。

#2


0  

You have to add name attribute to your button element so that if (isset($_POST['submit'])) will be true.

您必须将name属性添加到button元素,以便if(isset($ _ POST ['submit']))为true。

Please change

请更换

<button type="submit" class="btn btn-primary">Submit</button>

to

<button type="submit" name="submit" class="btn btn-primary">Submit</button>

or

要么

<input type="submit" name="submit" value="Submit" class="btn btn-primary" />

#3


0  

First of all you must need to provide name attribute for each input tags and button tags for a better approach :

首先,您必须为每个输入标记和按钮标记提供name属性,以获得更好的方法:

<form action="submit.php" method="post" class="form-horizontal">
                        <div class="form-group">
                            <label for="name" class ="col-lg-2 control-label" > Name</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" id ="name" name ="name" placeholder="Enter your Name" required>
                            </div>
                        </div>

                </div>
             <div class="col-lg-1">

             </div>
                <div class="form-horizontal" >

                        <div class="form-group">
                            <label for="email" class ="col-lg-2 control-label" > Email</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" name ="email" id ="email" placeholder="Enter your email address" required>
                            </div>
                        </div>

                </div> <div class="col-lg-1">

             </div>
                <div class="form-horizontal" >

                        <div class="form-group">
                            <label for="subject" class ="col-lg-2 control-label" > Subject</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" name ="subject" id ="subject" placeholder="Your Subject" required>
                            </div>
                        </div>

                </div>
             <div class="col-lg-1">

             </div>
                <div class="form-horizontal">

                        <div class="form-group">
                            <label for="message" class ="col-lg-2 control-label" > Message</label>
                            <div class="col-lg-7">
                                <textarea name="message" class="form-control" name ="message"  id ="message" cols="20" rows="3" placeholder="Your Message"></textarea>
                            </div>
                        </div> <!-- end form -->
                        <div class="col-lg-1">

             </div>
                        <div class="form-group">
                            <div class="col-lg-7 col-lg-offset-2">
                            <button type="submit" name ="submit" class="btn btn-primary">Submit</button>
                            </div>
                        </div>
                    </form>

Php Code for Insert data in DB :

用于在DB中插入数据的Php代码:

$result = mysqli_query($conn, "INSERT INTO contact (user, email, subject, message) VALUES ('".$name."', '".$email."', '".$subject."', '".$message."')");

$ result = mysqli_query($ conn,“INSERT INTO contact(user,email,subject,message)VALUES('”。$ name。“','”。$ email。“','”。$ subject。“', “”。$消息。 “')”);

#4


0  

Try this code :-

试试这个代码: -

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$conn = mysqli_connect($servername, $username, $password, $db_name);//         Establishing Connection with Server
mysqli_set_charset($conn, 'utf8');
if (!$conn) {
die("Database connection failed: " . mysqli_error($conn));
}
else 
    echo "connected successfully";

//Escaping string, not 100% safe, also consider validating rules and sanitization
$name = mysqli_real_escape_string($conn, $_POST['name']);
$email = mysqli_real_escape_string($conn, $_POST['email']);
$subject = mysqli_real_escape_string($conn, $_POST['subject']);
$message = mysqli_real_escape_string($conn, $_POST['message']);
$result = mysqli_query($conn, "INSERT INTO contact (user, email, subject, message) VALUES ('$name', '$email', '$subject', '$message')");

echo "INSERT INTO contact (user, email, subject, message) VALUES ('$name', '$email', '$subject', '$message')";//die;

if ($result) {
$message="successfully sent the query!!";
}
else
{$message="try again!!";}
}
?>

<form action="index.php" method="post" class="form-horizontal">
                        <div class="form-group">
                            <label for="name" class ="col-lg-2 control-label" > Name</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" name ="name" id ="name" placeholder="Enter your Name" required>
                            </div>
                        </div>

                </div>
             <div class="col-lg-1">

             </div>
                <div class="form-horizontal" >

                        <div class="form-group">
                            <label for="email" class ="col-lg-2 control-label" > Email</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" id ="email" name="email" placeholder="Enter your email address" required>
                            </div>
                        </div>

                </div> <div class="col-lg-1">

             </div>
                <div class="form-horizontal" >

                        <div class="form-group">
                            <label for="subject" class ="col-lg-2 control-label" > Subject</label>
                            <div class="col-lg-7">
                                <input type="text" name="subject" class="form-control" id ="subject" placeholder="Your Subject" required>
                            </div>
                        </div>

                </div>
             <div class="col-lg-1">

             </div>
                <div class="form-horizontal">

                        <div class="form-group">
                            <label for="message" class ="col-lg-2 control-label" > Message</label>
                            <div class="col-lg-7">
                                <textarea name="message" class="form-control" id ="message" cols="20" rows="3" placeholder="Your Message"></textarea>
                            </div>
                        </div> <!-- end form -->
                        <div class="col-lg-1">

             </div>
                        <div class="form-group">
                            <div class="col-lg-7 col-lg-offset-2">
                            <button type="submit" class="btn btn-primary" name="submit">Submit</button>
                            </div>
                        </div>
                    </form>

#1


1  

None of your input fields have a name="" attribute, including the button. So none of these fields will be sent in the $_POST array.

您的输入字段都没有name =“”属性,包括按钮。因此,这些字段都不会在$ _POST数组中发送。

Add a name="" attribute like this to all the fields you want sent to PHP

像这样添加name =“”属性到要发送给PHP的所有字段

<form action="submit.php" method="post" class="form-horizontal">
   <div class="form-group">
       <label for="name" class ="col-lg-2 control-label" > Name</label>
       <div class="col-lg-7">
           <input type="text" class="form-control" id ="name" name="name" placeholder="Enter your Name" required>
       </div>
    </div>

    </div>
    <div class="col-lg-1">
        </div>
        <div class="form-horizontal" >
            <div class="form-group">
                <label for="email" class ="col-lg-2 control-label" > Email</label>
                <div class="col-lg-7">
                    <input type="text" class="form-control" id ="email" name="email" placeholder="Enter your email address" required>
                </div>
             </div>
        </div> 
        <div class="col-lg-1"></div>
            <div class="form-horizontal" >
                <div class="form-group">
                   <label for="subject" class ="col-lg-2 control-label" > Subject</label>
                   <div class="col-lg-7">
                      <input type="text" class="form-control" id ="subject" name="subject" placeholder="Your Subject" required>
                   </div>
                </div>

         </div>
         <div class="col-lg-1"></div>
         <div class="form-horizontal">
             <div class="form-group">
                 <label for="message" class ="col-lg-2 control-label" > Message</label>
                 <div class="col-lg-7">
                     <textarea name="message" class="form-control" id ="message" name="message" cols="20" rows="3" placeholder="Your Message"></textarea>
                 </div>
             </div> <!-- end form -->
             <div class="col-lg-1"></div>
                <div class="form-group">
                   <div class="col-lg-7 col-lg-offset-2">
                      <button type="submit" class="btn name="submit" btn-primary">Submit</button>
                   </div>
                 </div>
       </form>

Also in your code in submit.php change this so you see an actual error message if one occurs.

另外在submit.php的代码中更改此项,以便在发生实际错误消息时看到。

if ($result) {
    $message="successfully sent the query!!";
} else {
    $message="Insert failed : " . mysqli_error($conn);
}
echo $message;

Although this does assume you are actually showing the $message value somewhere in your code that you have not shown us.

虽然这确实假设您实际上在代码中的某处显示了$ message消息,但您没有向我们展示过。

#2


0  

You have to add name attribute to your button element so that if (isset($_POST['submit'])) will be true.

您必须将name属性添加到button元素,以便if(isset($ _ POST ['submit']))为true。

Please change

请更换

<button type="submit" class="btn btn-primary">Submit</button>

to

<button type="submit" name="submit" class="btn btn-primary">Submit</button>

or

要么

<input type="submit" name="submit" value="Submit" class="btn btn-primary" />

#3


0  

First of all you must need to provide name attribute for each input tags and button tags for a better approach :

首先,您必须为每个输入标记和按钮标记提供name属性,以获得更好的方法:

<form action="submit.php" method="post" class="form-horizontal">
                        <div class="form-group">
                            <label for="name" class ="col-lg-2 control-label" > Name</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" id ="name" name ="name" placeholder="Enter your Name" required>
                            </div>
                        </div>

                </div>
             <div class="col-lg-1">

             </div>
                <div class="form-horizontal" >

                        <div class="form-group">
                            <label for="email" class ="col-lg-2 control-label" > Email</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" name ="email" id ="email" placeholder="Enter your email address" required>
                            </div>
                        </div>

                </div> <div class="col-lg-1">

             </div>
                <div class="form-horizontal" >

                        <div class="form-group">
                            <label for="subject" class ="col-lg-2 control-label" > Subject</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" name ="subject" id ="subject" placeholder="Your Subject" required>
                            </div>
                        </div>

                </div>
             <div class="col-lg-1">

             </div>
                <div class="form-horizontal">

                        <div class="form-group">
                            <label for="message" class ="col-lg-2 control-label" > Message</label>
                            <div class="col-lg-7">
                                <textarea name="message" class="form-control" name ="message"  id ="message" cols="20" rows="3" placeholder="Your Message"></textarea>
                            </div>
                        </div> <!-- end form -->
                        <div class="col-lg-1">

             </div>
                        <div class="form-group">
                            <div class="col-lg-7 col-lg-offset-2">
                            <button type="submit" name ="submit" class="btn btn-primary">Submit</button>
                            </div>
                        </div>
                    </form>

Php Code for Insert data in DB :

用于在DB中插入数据的Php代码:

$result = mysqli_query($conn, "INSERT INTO contact (user, email, subject, message) VALUES ('".$name."', '".$email."', '".$subject."', '".$message."')");

$ result = mysqli_query($ conn,“INSERT INTO contact(user,email,subject,message)VALUES('”。$ name。“','”。$ email。“','”。$ subject。“', “”。$消息。 “')”);

#4


0  

Try this code :-

试试这个代码: -

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$conn = mysqli_connect($servername, $username, $password, $db_name);//         Establishing Connection with Server
mysqli_set_charset($conn, 'utf8');
if (!$conn) {
die("Database connection failed: " . mysqli_error($conn));
}
else 
    echo "connected successfully";

//Escaping string, not 100% safe, also consider validating rules and sanitization
$name = mysqli_real_escape_string($conn, $_POST['name']);
$email = mysqli_real_escape_string($conn, $_POST['email']);
$subject = mysqli_real_escape_string($conn, $_POST['subject']);
$message = mysqli_real_escape_string($conn, $_POST['message']);
$result = mysqli_query($conn, "INSERT INTO contact (user, email, subject, message) VALUES ('$name', '$email', '$subject', '$message')");

echo "INSERT INTO contact (user, email, subject, message) VALUES ('$name', '$email', '$subject', '$message')";//die;

if ($result) {
$message="successfully sent the query!!";
}
else
{$message="try again!!";}
}
?>

<form action="index.php" method="post" class="form-horizontal">
                        <div class="form-group">
                            <label for="name" class ="col-lg-2 control-label" > Name</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" name ="name" id ="name" placeholder="Enter your Name" required>
                            </div>
                        </div>

                </div>
             <div class="col-lg-1">

             </div>
                <div class="form-horizontal" >

                        <div class="form-group">
                            <label for="email" class ="col-lg-2 control-label" > Email</label>
                            <div class="col-lg-7">
                                <input type="text" class="form-control" id ="email" name="email" placeholder="Enter your email address" required>
                            </div>
                        </div>

                </div> <div class="col-lg-1">

             </div>
                <div class="form-horizontal" >

                        <div class="form-group">
                            <label for="subject" class ="col-lg-2 control-label" > Subject</label>
                            <div class="col-lg-7">
                                <input type="text" name="subject" class="form-control" id ="subject" placeholder="Your Subject" required>
                            </div>
                        </div>

                </div>
             <div class="col-lg-1">

             </div>
                <div class="form-horizontal">

                        <div class="form-group">
                            <label for="message" class ="col-lg-2 control-label" > Message</label>
                            <div class="col-lg-7">
                                <textarea name="message" class="form-control" id ="message" cols="20" rows="3" placeholder="Your Message"></textarea>
                            </div>
                        </div> <!-- end form -->
                        <div class="col-lg-1">

             </div>
                        <div class="form-group">
                            <div class="col-lg-7 col-lg-offset-2">
                            <button type="submit" class="btn btn-primary" name="submit">Submit</button>
                            </div>
                        </div>
                    </form>