2011-12-30 2 views
1

쿼리를 수행하고 $raw_results이라는 변수에서 결과를 캡처했습니다.mysql_fetch_array를 사용하는 루프가 이전 mysql_fetch_array의 영향을받는 이유는 무엇입니까?

내가 다음과 같습니다

$record_set = mysql_fetch_array($raw_results); 

echo "<pre>"; 
print_r($record_set); 
echo "</pre>"; 

echo "<hr />"; 

그리고 바로 아래에, 내가 가진 :

while ($record_set = mysql_fetch_array($raw_results)) 
{ 
echo "<pre>"; 
print_r($record_set); 
echo "</pre>"; 
} 

놀랐 (혼란)이야 그 record #2 in the array 대신 record #1에서 while loop 시작됩니다.

루프 위의 블록을 제거하면 루프는 원래 예상대로 record #1으로 표시됩니다.

루프가 위에있는 블록의 영향을받는 이유는 무엇입니까?

시간을내어 미리 감사드립니다. 건배.

답변

2

mysql_fetch_array()을 호출 할 때마다 결과 리소스 $raw_results의 레코드 포인터가 진행됩니다. 따라서 초기 호출은 이미 두 번째 레코드로 넘어갔습니다. 다음 호출은 루프에 있든 단독 으로든 다음 (두 번째) 행을 검색합니다.

, 당신은 mysql_data_seek()을 사용할 수 있습니다 다시 첫 번째 레코드로 다시 되감기하려면

mysql_data_seek($raw_results, 0); 
+0

Brilliant! 고맙습니다. – Nathan

0

당신이 mysql_fetch_array을 처음 사용할 때 그것이 첫 번째 행을 반환하고 다음 행으로 포인터를 이동하기 때문에이 발생합니다.

관련 문제