2013-02-20 3 views
0

내 프로그램이 실행 중일 때 중복 오류가 나타납니다.중복 오류를 얻는 방법

사용자가 이미 학생을 등록한 경우 (studIdsy과 일치 함) 나는 "등록을 마쳤습니다."와 같은 오류가 표시됩니다. 그렇지 않으면 삽입 쿼리를 수행합니다. 내 테이블에 studId(c-1111) & sy(2011) 예를 들어 예전의 학생이 등록되어 있지만, 내 상황에서 "& 생성"버튼을 클릭하면 항상 오류 메시지가 나타납니다. sy도 있습니다. studId, c-1111은 2013입니다. 여기 내 코드가있다. 내 프로그램을 해결하도록 도와주세요.

 for($i=0; $i <= $row->studId; $i++){   
     $generated_pass = genpass($i); 
     echo "<td>$generated_pass</td>"; 
     $year = date("Y"); 
     $info = $mysqli->query("SELECT studId, sy FROM tbl_student WHERE 
        studId='".$row->studId."' AND sy= '$year'"); 
     if($info){ 
      echo "<script type='text/jscript'> 
     alert('You already did the enrollment.') 
     window.location='admin.php';</script>"; 
      } 
     else { 
     $insert = $mysqli->query("INSERT IGNORE INTO tbl_student (studId, 
        fname, lname, mname, password, dob, address, f_fname, f_mname, 
        f_lname, m_fname, m_mname, m_lname, departmentId, sy) VALUES 
        ('".$row->studId."', '".$row->fname."', '".$row->lname."', 
        '".$row->mname."', '".md5($generated_pass)."', '".$row->dob."', 
        '".$row->address."', '".$row->f_fname."', '".$row->f_mname."', 
        '".$row->f_lname."', '".$row->m_fname."', '".$row->m_mname."', 
        '".$row->m_lname."', '".$row->departmentId."', '".$row->sy."')"); 
       } 
        } 
+0

에 문의하십시오. $ info = $ mysqli-> query ("SELECT studId, sy FROM tbl_student where studId = ' ". $ row-> studId."'AND sy = '$ year' "); –

답변

0

studID와 sy가 고유 키인 MySQL 테이블 제약 조건을 추가하는 옵션이 있습니까? 그런 식으로 중복을 삽입하는 쿼리는 실패하고 PHP는 처리 할 수있는 오류를 발생시킵니다.

편집 : 본질적으로 제약 조건이 적용되지 않기 때문에 IGNORE 키워드가 제거되어야합니다.

+0

@hexblot .. 예, IGNORE를 제거하는 것을 잊었지만, 심지어는 INSERT 쿼리를 여전히 제거하지 않습니다. 네, 제 아내는 기본 키입니다. 나는 함수에 대해 생각해 보았지만 입력 유형 (예 : 등록시 이메일)에 대해서만 알고 있습니다. 조언을 구하기 위해 –

관련 문제