2011-02-25 10 views
0

データベースにレコードを追加しようとしているが、2つの同じレコードに達したときに同じレコードを追加すると、 。データベースにレコードを1つ追加したいが、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

+0

悪いコーディング規則をご存知でしょうか。 – PiDO

答えて

0

見て最初の明白な場所はINSERT句とブランチにあります。

は、ここに私のコードです。私の推測では、selectステートメントselect * from curriculum ...から返されたデータセットは2レコードを返しています。

はEDIT:どちらかが空の場合に無効なエントリがあるので、

学期と年の両方が空である場合に呼び出されるupdate句があるだけの時間、おそらく、ORでなければなりません。私は2番目の部分を理解していないし、なぜカリキュラムテーブルをチェックしているのですか

インサートまで:最初のクエリのレコードセットが学生レコードを見つけられない場合にのみ使用してください。私がそれを正しく読んでいるならば:現在はレコードが見つかったが、学期と年が空である場合にだけ呼び出されます。

+0

1つまたは非常に最初の外部クエリが2つの行を返すかどうかを問い合わせします。 .. – Randy

+0

まだ同じ出力..データベースのエントリの数を2倍にします。なぜならwhileループのためにコードは何度も(レコードの数に等しい)読み込まれるからです。私は解決策を見つけることができません。 – PiDO

+0

私はSemesterの値を得ることができるようにカリキュラムを呼び出します(同じではないG1Semと混同しないでください)。最初のif文がレコードを検索し、レコードを見つけたらG1SemとG1Yearそれが最初の句を行うように空の場合は空ですが、空でなければそれは2番目の句thats私はそのコードで考えていることを行います..しかし、それは複数のレコードを生成する.. thats私の問題.. thats: ( – PiDO

関連する問題