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

标签 php mysql forms mysqli

最终编辑: 谢谢大家的帮助。我一直试图在 index.php 而不是 submit.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" 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 代码:

    <?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


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

基本上 submit.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" 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代码:

$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!!";}
}
 ?>

最佳答案

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

将这样的 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>

同样在 submit.php 中的代码中更改此设置,以便在发生错误时看到实际的错误消息。

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

尽管这确实假设您实际上在代码中的某处显示了您未向我们显示的 $message 值。

关于php - 使用 php 表单将值存储到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33279320/

相关文章:

mysql - 如何使用一系列日期和每月计数创建查询?

javascript - 自动化 Web of Knowledge H-index 输出

Django 表单提交下拉选择而不是提交按钮

javascript - 根据所选输入值更改输入字段的表单

php - Wamp 服务器——无法执行任何 PHP Rest API

php - 为什么 Auth 组件用户名和密码登录自动功能在 CakePHP 中不能按预期工作?

mysql - mysql列名必须以字母开头吗?

SSL 站点上的 PHP Form Mailer

PHP - 如何在 2 个 foreach 循环内为数组分配字符串键和值?

php - PHP 变量大小有限制吗?