2011-09-28 1 views
0

PHP 처리 스크립트에 AJAX 게시를하고 있습니다. MySQL이 등록을 진행하는 행을 반환하는지 확인하고 있습니다. 내가 가지고있는 문제는 - MySQL은 빠르게 1 행을 울리고 0을 울리고 0 행이 있더라도 등록을 진행합니다. 왜 1 행이 반환되고 신속하게 자체를 수정하는지 보는 이유는 무엇입니까?PHP MySQL_return_rows = echos 1 then 0

$.ajax({ 
      type: "POST", 
      data: "username="+$(this).attr('username')+"password="+$(this).attr('email')+$(this).attr('password')+$(this).attr('passconf'), 
      url: "includes/register.php", 
      success: function(msg) 
      { 
       alert(data); 
       $("#result").data($data); 
      } 
     }); 

    }); 

PHP 코드 :

$res = mysql_query("SELECT * FROM users WHERE username = '".$username."'"); 
        if (!$res) { 
    $message = 'Invalid query: ' . mysql_error() . "\n"; 
    $message .= 'Whole query: ' . $query; 
    die($message); 
} 
        $num = mysql_num_rows($res); 
        echo $num; 
+0

1을 빠르게 울리는 것은 무엇을 의미합니까? 이 스크립트에 여러 요청을 보냅니 까? – Headshota

답변

2

이벤트 처리기 아마, 기본 동작을 방지하기 위해 실패 형태로 두 번 제출하는 원인 (한 번 아약스를 통해, 한 번 정기적 브라우저 양식 제출을 통해)된다. 이 같은 false를 반환보십시오 :

$(login_form).click(function() { 
    $.ajax({ ... }); 
    return false; 
}); 

false 반환하는 기본 동작을 방지하고 버블 링을 중지합니다. 버블 링을 계속 적용하려면 다음과 같이 기본값을 명시 적으로 금지 할 수 있습니다.

$(login_form).click(function(ev) { 
    ev.preventDefault(); 
    $.ajax({ ... }); 
});