如何使用此表单将多行放入sql?

时间:2014-03-04 11:39:27

标签: php html sql

您是否可以通过此表单帮助我将多行插入到我的sql数据库中?我尝试过在线搜索,但很多解决方案都是硬编码的信息。

这可能有点困难,因为我也发布了一个隐藏的变量但是这里......

代码:

(输入表格):

<?php

$essID = $_GET['essID'];
$sql = "SELECT * FROM ExamSubjectStudent WHERE essID = '$essID'";                       
$result = mysql_query($sql);

while ($row = mysql_fetch_array($result))
    {
        $esID = $row ['esID'];
        $sID = $row ['sID'];
    }

?>  

<form action="marktodatabase.php" method="post">

Mark:<input type="text" name="mark"><br />
Date:<input type="date" name="date"><br />
ExamSubject ID:<?php echo $esID;?> <input type="hidden" name="esID" value="<?php echo $esID; ?>" ><br />
Student ID:<?php echo $sID;?> <input type="hidden" name="sID" value="<?php echo $sID; ?>" ><br />

<input type="submit" name="submit">

</form>

(SQL输入)

<?php
    $mark=$_POST['mark'];
    $date=$_POST['date'];
    $esID=$_POST['esID'];
    $sID=$_POST['sID'];

    $sql = mysql_query("INSERT INTO Results (mark, date, esID, sID) VALUES ('$mark', '$date', '$esID', '$sID')");
    $result = mysql_query($sql);

 ?>

目前这一切都有效。但是我想为学生提供一个以上的标记/日期...,目前我选择一个单独的标记/日期但是我不确定如何制作它所以不止一个标记/日期/ esID / sID /被显示

请帮忙吗?

3 个答案:

答案 0 :(得分:0)

首先,您需要编辑表单,以便输入输出在PHP循环中。 然后,所有输入都需要名称中的esID和sID,以便稍后识别它们。不再需要隐藏的输入。

<form action="marktodatabase.php" method="post">
<?php
    $essID = $_GET['essID'];
    $sql = "SELECT * FROM ExamSubjectStudent WHERE essID = '$essID'";                       
    $result = mysql_query($sql);

    while ($row = mysql_fetch_array($result))
      {
        $esID = $row['esID'];
        $sID = $row['sID'];

        echo "Mark: <input type=\"text\" name=\"mark_".$esID."_".$sID."\"><br />";
        echo "Date: <input type=\"date\" name=\"date_".$esID."_".$sID."\"><br />";
        echo "ExamSubject ID:".$esID."<br />";
        echo "Student ID: ".$sID."<br />";
    }
?>  

<input type="submit" name="submit">
</form>

然后,为了保存,您需要遍历之前选择的所有行,检查它们是否已更改,然后保存它们。

<?php
$essID = $_GET['essID'];
$sqlSelect = "SELECT * FROM ExamSubjectStudent WHERE essID = '$essID'";                       
$result = mysql_query($sqlSelect);

while ($row = mysql_fetch_array($result))
  {
    $new_mark=$_POST['mark_'.$row['esId'].'_'.$row['sID']];
    $new_date=$_POST['date_'.$row['esId'].'_'.$row['sID']];
    $old_mark=$row['mark'];
    $old_date=$row['date'];

    if($new_mark != $old_mark || $new_date != $old_date) {
        $sqlInsert = mysql_query("INSERT INTO Results (mark, date, esID, sID) VALUES ('".$new_mark."', '".$new_date."', '".$esID."', '".$sID."')");
        $result = mysql_query($sqlInsert);
    }
}
?>

我没有对此代码进行测试,因此可能包含错误,但我希望您能够了解它并根据自己的需要对其进行修改。

编辑:另请查看Dipendu Paul关于如何在一个查询中插入多行的答案。您可以将它与我的脚本结合使用。

答案 1 :(得分:0)

单个查询中多个插入的语法如下所示:

INSERT INTO Results (mark, date, esID, sID) VALUES ('$mark1', '$date1', '$esID1', '$sID1')
                                                  ,('$mark2', '$date2', '$esID2', '$sID2') 
                                                  , ....more paranthesized comma separated values here;

您可以循环构造查询。

答案 2 :(得分:0)

您可以在insert语句中的每组值中的mysql.Add逗号(,)中插入多个值。

以下是示例。 &#34; INSERT INTO用户(姓名,姓氏)&#34;             。 #&34; VALUES(&#39;测试&#39;&#39;测试&#39),(&#39;测试&#39;&#39; testing1&#39),(&#39; testing1&#39;,&#39; testing2&#39;)&#34;

您也可以查看mysql教程。