您是否可以通过此表单帮助我将多行插入到我的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 /被显示
请帮忙吗?
答案 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教程。