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

+0

잘못된 코딩 규칙 때문에 유감입니다 .. – PiDO

답변

0

보는 첫 번째 명백한 장소는 INSERT 절 지점에 있습니다

여기 내 코드입니다. 내 생각에 선택 진술 select * from curriculum ...에서 반환 된 데이터 집합은 2 개의 레코드를 반환합니다.

는 편집 : 하나가 빈 상태 (empty)의 경우에 잘못된 항목이기 때문에

학기와 올해 모두 비어있는 경우 호출되는 업데이트 절은 유일한 시간, 아마, OR해야합니다. 두 번째 부분과 왜 커리큘럼 테이블을 확인하는지 이해하지 못합니다.

삽입까지 : 첫 번째 쿼리의 레코드 세트에 학생 레코드가없는 경우에만 사용해야합니다. 내가 그것을 올바르게 읽고 있다면 : 현재 그것은 레코드가 발견되었지만 학기와 연도가 비어있는 경우에만 호출됩니다.

+0

하나 또는 아주 첫 번째 외부 쿼리가 두 개의 행을 리턴합니다. .. – Randy

+0

여전히 동일한 출력 .. 그것은 데이터베이스의 항목 수를 두 배로합니다. while 루프 때문에 여러 번 (레코드 수와 같습니다) 코드를 읽는 것 같습니다. 솔루션을 찾을 수 없습니다. – PiDO

+0

나는 학기의 가치를 얻을 수 있도록 커리큘럼을 호출한다. G1Sem과 혼동하지 말라.) 첫 번째 if 문이 레코드를 검색하고 레코드를 찾으면 G1Sem과 G1Year 그것은 첫 번째 절을 할 것입니다 그런 식으로가는 경우 비어 있지만 그것은 비어 있지 않으면 두 번째 절을 그 코드에서 생각하고 그게 할 것이다 ..하지만 그것은 하나 이상의 기록을 생성 .. 내 문제는 그게 .. : ( – PiDO

관련 문제