表单条目将空白插入数据库

时间:2016-06-23 19:10:02

标签: php mysql forms

我创建了一个出勤表单,当我提交表单时,它会将我重定向到submit.php。但是,当我在phpmyadmin中检查时,除了时间戳之外我得到一个空白行。我向Stackoverflow询问了entering multi-row queries 。我还看了Submitting Form Returns Blank info

Submit.php

<?php
/*
Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password)
*/
$link = mysqli_connect("localhost", "root", "passowrd", "database");

// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

// Escape user inputs for security
$FName = mysqli_real_escape_string($link, $_POST['FName']);
$LName = mysqli_real_escape_string($link, $_POST['LName']);
$Mark = mysqli_real_escape_string($link, $_POST['Mark']);


// attempt insert query execution
$sql = "INSERT INTO database (FName,LName,Mark) VALUES ('$FName','$LName','$Mark')";


if(mysqli_query($link, $sql)){
    echo "Records added successfully.";
} else{
    echo "ERROR: Could not take attendence " . mysqli_error($link);
}

// close connection
mysqli_close($link);
?>

tester.php(形式)的

&#13;
&#13;
<html>

<head>
</head>

<body>
  <?php if(isset($_POST[ 'search'])) { $valueToSearch=$ _POST[ 'valueToSearch']; // search in all table columns // using concat mysql function $query="SELECT * FROM `students` WHERE CONCAT(`FName`, `LName`) LIKE '%" .$valueToSearch. "%'"; $search_result=f
  ilterTable($query); } else { $query="SELECT * FROM `students`" ; $search_result=f ilterTable($query); } // function to connect and execute the query function filterTable($query) { $connect=mysqli_connect( "host", "username",
  "password", "database"); $filter_Result=m ysqli_query($connect, $query); return $filter_Result; } ?>
  <form action="submit.php" method="post">
    <table border="1" align="center">
      <tr>
        <th>First Name</th>
        <th>Last Name</th>
        <th>Mark</th>

      </tr>
      <?php while($row=mysqli_fetch_array($search_result)):?>
      <tr>
        <!---<tdphp echo $row['FName'];></td>--->
        <td>
          <input type="text" name="FName" value="<?php echo $row['FName']?>" />
        </td>
        <!---<td><php echo $row['LName'];?></td>--->
        <td>
          <input type="text" name="LName" value="<?php echo $row['LName']?>" />
        </td>
        <td>
          <select name="Mark" id="Mark">
            <option value="Present">Present</option>
            <option value="Tardy">Tardy</option>
            <option value="Absent">Absent</option>
          </select>
        </td>




        <?php endwhile;?>
      </tr>
      <table align="center">
        <tr>
          <td>
            <input type="submit" value="Submit">
          </td>
        </tr>

      </table>

    </table>
    </table>
  </form>
</body>

</html>
&#13;
&#13;
&#13;

This is The Database Structure, I thought it would help.

1 个答案:

答案 0 :(得分:0)

此代码有几个问题。

  1. 你有一个循环中的提交按钮,最终会有同一个表单的多个提交按钮,实际上做同样的事情。您永远不应该有多个提交按钮,除非您希望在单击每个按钮时处理不同的方案。如果您只想在每个按钮上单击提交一行,那么您还应该为每个按钮单独提供一行。在这种情况下,您还应该在循环内移动表单的开始/结束标记。

  2. 您没有设置表单方法,因此默认为GET。如果要使用全局POST变量访问值,则应将表单方法设置为$_POST

  3. 您尝试通过$ _POST访问的参数不是您提交的表单的项目。根据您现在拥有的内容,如果您将表单方法设置为POST,则只能设置$_POST['name']。我猜您想要获取FName变量中设置的LName$row的数据,为此,您需要添加名称为FName和{的输入分别为{1}},值设置为LName中的值。它就像$row。如果您不希望它们可见,您也可以<input type="text" name="FName" value="<?php echo $row['FName']?>"/>

  4. 您还应该考虑使用AJAX进行提交,因此您无需在每次更新时重新加载页面。