我想在我的数据库中添加一条记录,但每次达到2条记录时它会使记录加倍

时间:2011-02-25 19:12:59

标签: php mysql

我正在向我的数据库添加记录,但是当我达到2个相同的记录并添加另一个相同的记录时,它会使数据库中的条目加倍。

这是我的代码:

$q = mysql_query("SELECT * FROM grade1 WHERE G1StudNo = '$_POST[cat]' AND G1SCode = '$_POST[subcat]' ");

while($noticia2 = mysql_fetch_array($q)) { 
    if(empty($noticia2['G1Sem']) AND empty($noticia2['G1Year'])){

        mysql_query("UPDATE grade1 SET G1Sem = '$_POST[Sem]', G1Year = '$_POST[Year]'
    WHERE G1StudNo = '$_POST[cat]' AND G1SCode = '$_POST[subcat]'");

    }
    else {
        $query = mysql_query("SELECT * FROM curriculum WHERE SCode='$_POST[subcat]'"); 

        while($noticia = mysql_fetch_array($query)) {
           $insertSQL1 = mysql_query("INSERT INTO grade1 (G1StudNo, G1SCode, G1Sem, G1Year, Semester, YearLevel)
    VALUES ('$_POST[cat]','$_POST[subcat]','$_POST[Sem]','$_POST[Year]','$noticia[Semester]','$noticia[YearLevel]')");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

要看的第一个显而易见的地方是带有INSERT子句的分支。我最好的猜测是从select语句select * from curriculum ...返回的数据集返回2条记录。

编辑:

调用update子句的唯一时间是,如果学期和年份都是空的,可能应该是OR,因为如果其中任何一个为空,则它是无效的条目。我不明白第二部分以及为什么要检查课程表

就插入而言:它可能只应在第一个查询的记录集找不到学生记录时使用。如果我正确阅读:目前只有在找到记录但是学期和年份为空时才会调用它。