php多条记录插入到sql无法正常工作

时间:2014-03-17 12:59:33

标签: php html mysql sql

大家好我有一个表格可以让我为考试输入学生分数,我想要做的就是立刻输入多个分数......但它只是不起作用,有人可以帮忙吗?它只添加了一个结果,并没有输入我写的全部内容。

FORM代码:

4 个答案:

答案 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