2012-05-20 5 views
-4

왜 이것이 가능하지 않습니까? 내가 결심을 비울 수있는 어떤 방법이 있습니까? while 루프가있는 동안 ...
while 루프는 루프 계속 결과 자원에서 모든 값을 추출하기 때문에 시간while 루프 후에 결과가 비어 있습니다.

+0

다시 콜린 (Colin)이 말한 내용 : 예를 들어 [이 답변] (http://stackoverflow.com/ a/7773141/157247)에서 귀하의 질문에 대한 답변을 제공합니다. –

답변

2

없음에 대한

$sqlAllInfo = "SELECT item1, item2 FROM example"; 
$resAllInfo = mysql_query($sqlAllInfo); 

while($rowAllInfo = mysql_fetch_assoc($resAllInfo)){ 

    echo $rowAllInfo['item1']; 

} 

$rowAllInfo = mysql_fetch_assoc($resAllInfo); 

echo $rowAllinfo['item2']; 

덕분에, 결과는 항상 당신의 while 루프 후 비어 있습니다 여전히 정보를 추출하고, 비어하거나 완료됩니다 오류가

당신이 $ rowAllInfo 여전히 마지막 항목이 포함 된 마지막 항목을 얻기 위해, 표준 경우에 발생하는 경우, 당신은 통해 반복된다)

+0

자, 탐험 해줘서 고마워.) – thar

2

을 더 결과가 없을 때까지 while을 사용하여 결과가 설정됩니다.이 남아 있습니다. 더 이상 결과가 없으므로 mysql_fetch_assocfalse을 반환하면 while 루프가 종료됩니다. mysql_fetch_assoc를 다시 호출하면 결과가 더 이상 없음을 의미합니다.

2

이 줄 :

while($rowAllInfo = mysql_fetch_assoc($resAllInfo)){ 

rowAllInfo에 새 값을 할당하고 "true"로 -ish는 여전히 여부를 나중에 검사 (PHP가 될 수있는 "사실"로 ;-)) 이제

, 마지막 행을 가져온 후 mysql_fetch_assoc()은 false를 반환하고 $ rowAllInfo에 할당됩니다. $ rowAllInfo는 이제 "false"이므로 루프는 더 이상 실행되지 않지만 look-it은 너무 늦었습니다! 변수의 값은 이미 false입니다.

그 후에도 mysql_fetch_assoc()에 다시 전화하십시오. 그러나 루프 내의 모든 행을 이미 가져 왔으므로 더 이상 행이 남지 않으며 다시 한번 $rowAllInfo이 "false"로 설정됩니다.

그래서 무엇을하려고 하든지간에 이것은 아마도 자신의 방식이 아닙니다. 귀하가 이해하려고하는 것을 달성하기위한 일반적인 방법은 다음과 같습니다.

$allRows = array(); 
while($row = mysql_fetch_assoc($res)) { 
    $allRows[] = $row; 
} 

// show the array we just created... 
echo print_r($arrRows, 1);