2012-01-05 3 views
3

나는 내 마음을 잃어 가고 있다고 생각합니다.PHP - PDO 루프 반입

이것은 코드입니다. (내가 실제로 점을 증명하기 위해해야 ​​할 노력하고 무엇의 단순화 된 버전입니다.)

$STH = $DBH->query("SELECT * FROM help"); 
$STH->setFetchMode(PDO::FETCH_ASSOC); 

while($row = $STH->fetch()) { 
    echo $row['text']; 
    $help_text = $row['text']; 
} 
echo "->"; 
echo $help_text; 
echo "<-"; 

핸들 DBH를 사용하여 DB는 MySQL에 대한 DB 연결이 괜찮습니다 (나열되지 않음). 쿼리가 제대로 작동합니다. 루프 내의 $row['text']의 에코는 여러 번 올바르게 작동합니다. 그러나 -><- 사이의 $help_text의 메아리는 아무 작업도 수행하지 않으므로 -><-이 표시됩니다. 에코가 $row['text']의 마지막 인스턴스를 표시 할 것으로 기대합니다.

왜 작동하지 않습니까?

+0

당신이 마지막 행이 비어있는 경우이 쿼리가 반환 될 때, 다음 help_text 내가 아주 분명 뭔가가있어 너무 – SergeS

+1

하지 않는 비어 있습니다 무엇을 우리에게 보여줄 수있는 루프 외부로 선언해야 당신의 코드에는'$ help_text'가 설정되어 있지 않습니다. 문제는 다른 곳에서 발생해야합니다. 또한'var_dump()'를 사용하여 평범한'echo'보다는 값을 검사하십시오. –

+1

오프 토픽 :'PDOStatement'는 [Traversable'] (http://php.net/Traversable)을 구현하므로 foreach 루프를 사용하여 결과를 반복 할 수 있습니다 : foreach ($ STH as $ row) {...}'. – outis

답변

5

당신은,

$help_text = ""; 
while($row = $STH->fetch()) { 
    echo $row['text']; 
    $help_text .= $row['text']; 
} 
echo "->"; 
echo $help_text; 
echo "<-"; 
+0

나는 그가 모든 가치를 연결하고 싶지 않을 것 같아요. –

+0

$ help_text = "a"를 추가했습니다. echo $ help_text; 루프 전에. 루프 앞의 에코는 a를 생성합니다. 루프가 끝나면 -><- - 분리되지 않습니다. 나는 또한 다음을 시도했다 : while ($ a <3) {$ b = $ a; $ a ++;} echo "b = $ b"; 에코는 루프 앞에 $ b를 선언했는지 여부에 관계없이 "b = 2"를 생성합니다. – Nick