2014-11-26 4 views
0

PHP 코드의 두 조각 :PHP에서 MySQL 행 목록을 호출하면 예기치 않은 결과가 발생합니다.

첫 번째 코드는 다른 행의 값을 순차적으로 제공합니다.

while ($row = mysql_fetch_assoc($rst)) { 
... 
$link1 = $row['audio1']; 
    if ($link1) { 
    $link1 = $link1; 
    } 
... 
} 

두 번째 행은 첫 번째 행의 값을 출력하고 모든 후속 행에 값을 적용합니다.

.l.e. 첫 번째 코드 샘플

Audio1.mp3 
Audio2.mp3 
Audio3.mp3 

생성 여기서 두 번째는 두 유사한 구현 출력이 다른 이유 질문은

Audio1.mp3 
Audio1.mp3 
Audio1.mp3 

를 생성한다.

첫 번째 예제는 한 줄 (첫 번째 줄) 만 출력하고 두 번째 예제의 출력은 반복 줄과 동일합니다. 한 테이블, INT (ID), CHAR, SMALLINT, TINYTEXT, TEXT, TEXT, TINYTEXT (AUDIO 1) 사용되는

MySQL의 테이블은 다음 구조를 갖는다. 마지막 행 (audio1)은 대부분 비어 있고 중간에 NULL이 아닌 값을 가지고 있습니다 (id 필드로 정렬 한 경우). 'audio1'을 다른 열 이름으로 바꾸면 두 경우 모두 해당 필드에 대한 올바른 결과가 나타납니다.

또 하나의 추가 사항은 실제로 행을 걸러내는 mysql_query에 SELECT 문을 넣는 것입니다. 반환되는 행 수에 따라 두 번째 예제의 그림은 3 개의 반복되지 않는 값 다음에 끝까지 세 번째 값이 반복되는 것과 같이 약간 다를 수 있습니다.

+2

게시하는 부분은 실제로 동일합니다. 그래서 오류는 어딘가에'... '에 숨겨져 야합니다 ... – Wrikken

+2

아무런 차이가 없어야합니다. 첫 번째 것은 다소 무의미합니다 :'if (value는 non-falsey) {value = value}'. –

+3

'if ($ link1) {$ link1 = $ link1;}'... 뭐라고 요? –

답변

0

수정했습니다. 긴 이야기는 짧았습니다 - 정말 분명했습니다 : iftrue이 아닌 경우 루프 사이클 $ link1 변수가 변경되지 않았습니다. 내가해야 할 일은 이나 unset ($link);while 바로 뒤에 놓는 것이고, 그럴 경우 $row['audio1']의 빈 값을 만나면 모든 새로운 행에 대해 이전 값을 재사용하는 대신 실제로 비어있게됩니다.

관련 문제