2011-02-25 94 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

相關問題