2013-02-11 2 views
2

이 코드의 문제점. 테이블이 비어 있으면 삽입 기능에 들어갈 수 없으며 항상 업데이트를 수행하고 있습니다. 아무도 내가이 일을 해결하도록 도울 수 있습니까?PHP가 비어 있지 않은 경우 행을 업데이트하십시오 else 삽입

while ($row = $result->fetch_object()) { 

     if ($result->num_rows > 0) { 

       $updatequery = sprintf("UPDATE stat_mailings SET cat_id='%s', mailing_name='%s', mailing_unique_id='%s', segment_id='%s', 
                     campaign_id='%s', landing_page='%s', total_sent='%s' WHERE mailing_id='%s'", 
             $row->category_id, 
             mysqli_real_escape_string($mysqli, $row->mailing_naam), 
             $row->unique_id, 
             $row->mailing_segment, 
             mysqli_real_escape_string($mysqli, $row->utm_campaign), 
             mysqli_real_escape_string($mysqli, $row->landing_page), 
             $row->mailing_total_sent, 
             $row->id           
       ); 

       $mysqli->query($updatequery); 
       echo $error = $mysqli->error; 


     } else { 

      $insertquery = sprintf("INSERT INTO stat_mailings SET mailing_id='%s', cat_id='%s', mailing_name='%s', mailing_unique_id='%s', segment_id='%s', 
                     campaign_id='%s', landing_page='%s', total_sent='%s'", 
             $row->id, 
             $row->category_id, 
             mysqli_real_escape_string($mysqli, $row->mailing_naam), 
             $row->unique_id, 
             $row->mailing_segment, 
             mysqli_real_escape_string($mysqli, $row->utm_campaign), 
             mysqli_real_escape_string($mysqli, $row->landing_page), 
             $row->mailing_total_sent                      
       ); 

       $mysqli->query($insertquery); 
       echo $error = $mysqli->error;  

     } 
+2

$ result-> num_rows는 항상 0보다 큽니다. $ result-> num_rows의 값을 확인하십시오. – vodich

+0

그래,하지만이 문제를 해결하는 방법은 작동할까요? 나는 그것을 이해할 수 없다 .. –

+0

나는 값을 확인했다. 쿼리가 항상 0 행 이상을 반환하고 코드가 삽입 부분에 들어 가지 않습니다. – vodich

답변

3

Mysql에는 중복 쿼리가 있습니다.
그것은 등등

INSERT INTO t SET f1=val,f2=val2 ON DUPLICATE KEY UPDATE f1=val,f2=val2 

과 같습니다.
키 필드에 UNIQUE 색인 만 있는지 확인하십시오.
그래서 SELECT 쿼리를 제거하면 결과를 확인할 수 있습니다.

관련 문제