2011-02-25 96 views
0

我添加记录到我的数据库,但是当我到达2条相同的记录,并添加另一个相同的记录双打在数据库中录入的时间加倍。我想在我的数据库中添加一条记录,但记录每次达到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]')"); 
     } 
    } 
} 
+0

你的代码是有点难以阅读...你能正确格式化?此外,在您的查询中,您不需要连接,因此您需要执行''。$ _ POST [cat]。''' – Bill 2011-02-25 19:23:02

+0

对于错误的编码约定感到抱歉.. – PiDO 2011-02-25 19:27:16

回答

0

看第一个明显的地方是与INSERT子句分支。我最好的猜测是,该数据集从你的SELECT语句返回select * from curriculum ...将返回2个记录。

编辑:

唯一一次更新条款被称为是如果两个学期和一年是空的,大概应该是OR,因为它是一个无效的条目;如果要么是空的。我不明白的第二部分,为什么要检查课程表

至于插入:它可能只能如果从第一个查询记录发现没有学生记录中使用。如果我正确地阅读它:目前只有在找到记录但学期和年份都是空白的情况下才会调用它。

+0

无论是一个还是第一个外部查询都返回两行。 .. – Randy 2011-02-25 19:36:32

+0

仍然是相同的输出..双打似乎因为while循环读取代码多次(等于记录数)的..我不能为它找到一个解决方案数据库的条目数。 – PiDO 2011-02-25 19:37:32

+0

我称之为课程,以便我可以得到学期的价值(不要与G1Sem混淆)。第一条if语句搜索记录,如果它发现记录,它将测试G1Sem和G1Year是空的,如果它这样做,它会做第1条款,但如果它不是空的,它会做的第二个条款多数民众赞成我在想这个代码..但它会产生多个记录..多数民众赞成我的问题..:多数民众赞成我的问题..: ( – PiDO 2011-02-25 19:53:53

相关问题