【问题标题】:PHP Form sends blank data to mySQL [duplicate]PHP表单向mySQL发送空白数据[重复]
【发布时间】:2015-08-12 04:21:48
【问题描述】:

我正在为我学校的活动创建一个注册表单,但是对 PHP 和数据库非常陌生,这对我来说是一项艰巨的工作。

问题是表单向表格提交了空白数据。我可以看到每次提交都会创建一个新行,但是数据是空白的。

代码如下:

部分 index.html中的表单

<form action="input.php" method="post">
<p>
   <input name="prefix" type="radio" id="male"/>
   <label for="male">นาย/เด็กชาย</label>
</p>
<p>
   <input name="prefix" type="radio" id="female"/>
   <label for="female">นางสาว/เด็กหญิง</label>
</p>
<div class="row">
    <div class="col s12">
        <div class="input-field col s12 m6">
            <input id="firstname" type="text" class="validate"/>
            <label for="firstname">ชื่อ</label>
        </div>
        <div class="input-field col s12 m6">
            <input id="lastname" type="text" class="validate"/>
            <label for="lastname">นามสกุล</label>
        </div>
           .
           .
           .
           .
<button class="btn btn-large waves-effect waves-light red accent-4" type="submit" name="submit">ส่ง</button>
</form>

input.php

<?php
mysql_connect("localhost", "acsp", "passwordhidden");
mysql_select_db("logicgames");
$order = "INSERT INTO data_logicgames (prefix, firstname, lastname, phone, school, teammate1, teammate2, games, division) VALUES ('$prefix', '$firstname', '$lastname', '$phone', '$school', '$teammate1', '$teammate2', '$games', '$division')";
$result = mysql_query($order);
if ($result) {
    echo "<p>Success</p>";
} else {
    echo "<p>Failed</p>";
}
?>

【问题讨论】:

    标签: php mysql forms


    【解决方案1】:

    更好的方法是..

    <?php
    
    if( isset($_POST['submit']) )
    {
        $prefix     =   $_POST['prefix'];
        $firstname  =   $_POST['firstname'];
        $lastname   =   $_POST['lastname'];
        $phone      =   $_POST['phone'];
        $school     =   $_POST['school'];
        $teammate1  =   $_POST['teammate1'];
        $teammate2  =   $_POST['teammate2'];
        $games      =   $_POST['games'];
        $division   =   $_POST['division'];
    
        mysql_connect("localhost", "acsp", "passwordhidden");
        mysql_select_db("logicgames");
        $order = "INSERT INTO data_logicgames (prefix, firstname, lastname, phone, school, teammate1, teammate2, games, division) VALUES ('$prefix', '$firstname', '$lastname', '$phone', '$school', '$teammate1', '$teammate2', '$games', '$division')";
        $result = mysql_query($order);
        if ($result) {
            echo "<p>Success</p>";
        } else {
            echo "<p>Failed</p>";
        }
    }
    else
    {
        echo "<p>Failed</p>";
    }
    ?>
    

    【讨论】:

      【解决方案2】:

      首先为您的每个输入字段命名,如数据库字段中的名称。

      您必须在变量中接收您的 POST 值。如果你不想每次都这样做。您可以使用 foreach 循环。

      <?php
      mysql_connect("localhost", "acsp", "passwordhidden");
      mysql_select_db("logicgames");
      foreach($_POST as $key => $val)
      {
          ${$key} = $val;
      }
      $order = "INSERT INTO data_logicgames (prefix, firstname, lastname, phone, school, teammate1, teammate2, games, division) VALUES ('$prefix', '$firstname', '$lastname', '$phone', '$school', '$teammate1', '$teammate2', '$games', '$division')";
      $result = mysql_query($order);
      if ($result) {
          echo "<p>Success</p>";
      } else {
          echo "<p>Failed</p>";
      }
      ?>
      

      【讨论】:

        【解决方案3】:

        在你的 input.php 中你没有定义

        '$prefix', '$firstname', '$lastname', '$phone', '$school', '$teammate1', '$teammate2', '$games', '$division'
        

        像这样 $prefix = $_POST['prefix']; 等等

        【讨论】:

          【解决方案4】:

          您的表单有 2 个没有名称标签的输入!您需要为发送到服务器的每个字段提供一个名称标签,并能够使用 $_POST["lastname"]; 检索它。在 php 中。 你在哪里声明你的价值观? ($前缀,$lastaname 等 ..) id 仅在您使用 JavaScript 时使用。

          【讨论】:

            猜你喜欢
            • 2016-01-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-01-07
            • 2018-06-10
            • 2016-06-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多