2010-04-10 2 views
2

이것은 간단하게 보일지 모르지만, 아무 것도 반환하지 않는 쿼리를 처리하는 방법에 따라 모든 종류의 오류가 발생했습니다.

$query = "SELECT * FROM messages WHERE id > ".$messageId; 
$result =mysql_query($query); 
$time = time(); 
while(time()-$time<60 && $result==false) 
{ 
    $result = mysql_query($query); 
} 
if(result != false) 
    //Encode response 
else 
    //return nothing 

mysql_query()가 무엇을 반환했는지 어떻게 확인합니까? 당신이 무슨 일을하고 있는지

당신은 당신의 루프는 결과를 얻을 때까지 뭔가를 조회하는 것입니다 가정하면 mysql_num_rows().

를 사용하여 반환되는 행의 수를 확인할 수 있습니다

+1

DOS처럼 자신의 데이터베이스를 공격 할 것 같습니다. –

답변

2

, 그것은

while(time()-$time<60 && $num_rows == 0) 
{ 
    $result = mysql_query($query); 
    $num_rows = mysql_num_rows($result); 

(확실하지 않은 것 데이터베이스 서버에 큰 부담을 줄 가능성이 있기 때문에 여기에 좋은 아이디어가 있습니다. 그러나 다른 문제입니다.)

mysql_query()은 "실제"오류, 예를 들어 false을 반환합니다. 맞춤법이 틀린 쿼리 또는 연결이 끊어졌습니다.

+0

또한 MySQL 연결이 시간 초과되지 않았고 세션이 정상인지 확인해야합니다. 이것을 위해 mysql_ping을 사용하십시오 (이 기능은 자동 재 연결을 할 수 있지만이 기능을 사용하지 않는 것이 좋습니다). – svens

관련 문제