【问题标题】:Submitting fully filled form creates empty row in mysql提交完全填写的表格会在 mysql 中创建空行
【发布时间】:2018-12-02 07:21:32
【问题描述】:

这是表格:

<form>
            <div class="form-group ">
                                    <label for="exampleInputFirstName">First Name</label>
                                    <input type="text" class="form-control" id="exampleInputFirstName" name="FirstName" placeholder="First Name">
                              </div>
                              <div class="form-group">
                                    <label for="exampleInputLastName">Last Name</label>
                                    <input type="text" class="form-control" id="exampleInputLastName" name="LastName" placeholder="Last Name">
                              </div>
                              <div class="form-group">
                                    <label for="exampleInputEmail1">Email address</label>
                                    <input type="email" class="form-control" id="exampleInputEmail1" name="Email" aria-describedby="emailHelp" placeholder="Enter Email">
                                    <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
                              </div>
                              <div class="form-group">
                                    <label for="exampleInputPassword">Password</label>
                                    <input type="password" class="form-control" id="exampleInputPassword" name="Password" placeholder="Password">
                              </div>
                              <div class="form-group">
                                    <label for="exampleInputPassword1">Confirm Password</label>
                                    <input type="password" class="form-control" id="exampleInputPassword1" name="confirmPassword" placeholder="Confirm Password">
                              </div>
                              <button type="submit" name="submit" class="btn btn-primary">Submit</button>
                        </form>

这是 php:

<?php 
        $link = mysqli_connect("shareddb-i.hosting.stackcp.net", "LoginCredentials-3337b6db", "subrat410", "LoginCredentials-3337b6db");

        if (mysqli_connect_error()) {

            die ("There was an error connecting to the database");

        } 
    if(isset($_POST['submit'])) {
        $FirstName = $_POST['FirstName'];
        $LastName = $_POST['LastName'];
        $Email = $_POST['Email'];
        $Password = $_POST['Password'];
        $confirmPassword = $_POST['confirmPassword'];
    }
        $query ="INSERT INTO `Login-Credentials`( `FirstName`, `LastName`, `Email`, `Password`, `ConfirmPassword`) VALUES (' $FirstName ',' $LastName ',' $Email ',' $Password ',' $confirmPassword ')";

        // $query = "UPDATE `LoginCredentials` SET password = 'uedjUFH7^%' WHERE email = 'robpercival80@gmail.com' LIMIT 1";

        mysqli_query($link, $query);
?>

每次我填写表单并提交时,都会在我的数据库中创建另一个空行。任何帮助将不胜感激。我已经实现了 php.ini 文件并且它没有显示任何类型的错误。此外,在查看页面源代码时,我在声明 $FirstName=$_POST('FirstName') 的 php 代码中看到未定义索引错误。谢谢

【问题讨论】:

  • 检查您的 $_POST 变量是否已设置且不为空,请按照以下方式执行操作:$FirstName = (isset($_POST['FirstName']) &amp;&amp; !empty($_POST['FirstName'])) ? $_POST['FirstName'] : false; 仅在(插入 if 条件)您没有收到任何“假”值时运行查询。
  • 您好先生,我已经应用了上述代码。现在至少它没有在我的数据库中插入空行。我的问题是我在同一个文件 index.php 中编写了 php 和 html 代码,现在我面临无法将表单数据发送到 php 变量的情况。请帮忙

标签: php mysqli


【解决方案1】:

Lovelace 是对的,也许您的 $_POST 变量仍未设置。 您的表单标签没有方法或操作属性

<form actions="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST">
    //the rest of your code is fine

</form>

【讨论】:

  • 您好先生,我的问题是我在同一个文件 index.php 中编写了 php 和 html 代码,现在我面临无法将表单数据发送到 php 变量的情况。请帮忙
【解决方案2】:

&lt;form&gt; 元素定义了数据的发送方式。它的所有属性都旨在让您配置在用户点击提交按钮时发送的请求。两个最重要的属性是actionmethod。” see more.

您的 HTML 代码可能类似于:

<form actions=”[target url]” method=“POST”>
        <div class="form-group ">
             <label for="exampleInputFirstName">First Name</label>
             <input type="text" class="form-control" id="exampleInputFirstName" name="FirstName" placeholder="First Name">
        </div>
        <div class="form-group">
             <label for="exampleInputLastName">Last Name</label>
             <input type="text" class="form-control" id="exampleInputLastName" name="LastName" placeholder="Last Name">
        </div>
       <div class="form-group">
             <label for="exampleInputEmail1">Email address</label>
             <input type="email" class="form-control" id="exampleInputEmail1" name="Email" aria-describedby="emailHelp" placeholder="Enter Email">
             <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
       </div>
       <div class="form-group">
            <label for="exampleInputPassword">Password</label>
            <input type="password" class="form-control" id="exampleInputPassword" name="Password" placeholder="Password">
       </div>
       <div class="form-group">
            <label for="exampleInputPassword1">Confirm Password</label>
            <input type="password" class="form-control" id="exampleInputPassword1" name="confirmPassword" placeholder="Confirm Password">
       </div>
      <button type="submit" name="submit" class="btn btn-primary">Submit</button>
 </form>

【讨论】:

  • 您好先生,我的问题是我在同一个文件 index.php 中编写了 php 和 html 代码,现在我面临无法将表单数据发送到 php 变量的情况。请帮忙
  • @SubratSaxena 只是将 php 表单处理代码放在 html 表单上方并检查是否设置了 $POST['submit']。请记住将所有 php 表单处理代码放在 if 结构中,以防止创建空行。
  • 以同样的方式做,现在它的工作。谢谢你:)
【解决方案3】:

你的表单应该定义一个动作和一个方法,它可能使用 GET 而不是 POST:

<form action="your/php/file.php" method="post">

请参阅此处了解表单默认为 GET 请求(如果您使用 GET 请求路线,PHP $_GET 变量会很有用):What is the default form HTTP method?

在您的 php 中,使用 $_REQUEST["propertyName"] 通常总是比使用 $_POST["propertyName"] 或 $_GET["propertyName"] 更好,因为它可以使用任何一种方法类型

此外,您可能应该将查询放在 if 语句中以防止出现空行。

最后,你可以试试下面的 php 行看看发生了什么:

var_dump($_REQUEST);
var_dump($_GET);
var_dump($_POST);

让我知道您发现了什么,我们将继续帮助您解决问题

【讨论】:

  • 您好先生,我已通过设置所有 php 变量来纠正空行问题。我的问题是我在同一个文件 index.php 中编写了 php 和 html 代码,现在我面临无法将表单数据发送到 php 变量的情况。请帮忙
  • 您是否已将
    更改为
    ?你能用 提交表单后?
  • 是的,先生,我已经更改了操作,现在可以正常工作了。我不得不为所有 php.ini 创建另一个文件。虽然我可以通过将 action="" 保存在一个地方,但通过分隔代码感觉很安全。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2011-11-25
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
相关资源
最近更新 更多