2011-02-25 6 views
0

Я добавляю записи в свою базу данных, но когда я достигаю двух одинаковых записей и добавляю еще одни записи, он удваивает запись в базе данных ,Я хочу добавить одну запись в свою базу данных, но она удваивает запись каждый раз, когда она достигает 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 записи.

EDIT:

Единственный раз, когда пункт обновление называется, если как семестр и год пустуют, вероятно, должно быть OR, так как он является недействительным, если вход либо пуст. Я не понимаю вторую часть и почему вы проверяете таблицу учебных программ

Что касается вставки: ее, вероятно, следует использовать только в том случае, если набор записей из первого запроса не находит записи студента. Если я правильно его читаю: в настоящее время он вызывается только в том случае, если запись найдена, но семестр и год пусты.

+0

либо тот, либо самый первый внешний запрос возвращает две строки. .. – Randy

+0

все тот же выход .. он удваивает количество записей в базе данных, кажется, что из-за цикла while он многократно считывает код (равный количеству записей) .. я не могу найти решение для него. – PiDO

+0

Я называю учебный план, чтобы я мог получить значение семестра (не путайте с G1Sem, это не одно и то же.) Первые операторы if ищут запись, и если она найдет записи, она будет проверять, будут ли G1Sem и G1Year пуст, если он пойдет таким образом, он выполнит первое предложение, но если он не будет пустым, он сделает 2-ое предложение таким, что я думаю в этом коде .. но он генерирует более одной записи .. thats my problem ..: ( – PiDO

Смежные вопросы