大家好我有一个表格可以让我为考试输入学生分数,我想要做的就是立刻输入多个分数......但它只是不起作用,有人可以帮忙吗?它只添加了一个结果,并没有输入我写的全部内容。
FORM代码:
答案 0 :(得分:2)
在这种情况下,脚本不知道$ i是什么。
用于循环:
$mark=$_POST['mark'];
$time=$_POST['time'];
$meID=$_POST['meID'];
$sID=$_POST['sID'];
for($i = 0; $i < count($_POST['mark']); $i++) {
$_mark = mysql_escape_string($mark[$i]);
$_time = mysql_escape_string($time[$i]);
$_meID = mysql_escape_string($meID[$i]);
$_sID = mysql_escape_string($sID[$i]);
$sql = "INSERT INTO Marks (mark, time, meID, sID) VALUES ($_mark, $_time, $_meID, $_sID)";
$result = mysql_query($sql);
}
此外,由于两次mysql_query()调用,您将添加两次标记。在我的回答中,我已经从$ sql变量中删除了一个。您在插入查询中也有错误的变量名称。
答案 1 :(得分:1)
没有mysql_escape_string
。尝试替换这个;
$_mark = mysql_escape_string($mark[$i]);
到
$_mark = mysql_real_escape_string($mark[$i]);
并将$_mark
放入查询而不是$mark
并替换所有其他人。
答案 2 :(得分:1)
我认为问题在于变量名称:
以下行:
$sql = "SELECT * FROM ModuleExamStudent WHERE mesID = '$mesID'";
但是没有 $ mesID 。它应该是 $ mes :
$sql = "SELECT * FROM ModuleExamStudent WHERE mesID = '$mes'";
再次:
$sql = mysql_query("INSERT INTO Marks (mark, time, meID, sID) VALUES ('$mark', '$time', '$meID', '$sID')");
应该是:
$sql = mysql_query("INSERT INTO Marks (mark, time, meID, sID) VALUES ('$_mark', '$_time', '$_meID', '$_sID')");
答案 3 :(得分:0)
是的,你的很多错误都是代码。 保险丝michal.hubczyk和Ambrish回答获得你想要的誓言。 如果我可以建议另一种方法,我宁愿只做一个查询而不是循环内查询序列的数量增加。
试试这个方法 Inserting multiple rows in a single SQL query? 并以这样的方式构建您的查询:
$sql = "INSERT INTO XX VALUES";
for($i=0;$i < count($_POST['mark']); $i++){
$_mark = mysql_escape_string($mark[$i]);
$_time = mysql_escape_string($time[$i]);
$_meID = mysql_escape_string($meID[$i]);
$_sID = mysql_escape_string($sID[$i]);
$sql .= "(".$_mark.",".$_time",".$_meID.",".$sID.")";
if($i<(count($_POST['mark']-1))){
$sql .= ",";
}
$result = mysql_query($sql);
另一个建议是使用mysqli libray而不是mysql(http://php.net/mysqli)