array
을 반환하는 데이터베이스에서 요청을 수행하고 있습니다. 값을 살펴 보려면 foreach
루프를 사용하고 있습니다.mysqli_fetch_array() foreach loop duplicates
데이터베이스 (단 1 개 항목)
id | field1 | field2 | field3 | field4 | field5
---|--------|--------|--------|--------|--------
1 | value1 | | value3 | value4 | value5
PHP 소스 코드
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$q = mysqli_query($mysqli, "SELECT * FROM my_table");
echo "<ul>";
while($q = mysqli_fetch_array($q))
{
foreach ($q as $key => $value)
{
if($value != NULL)
{
echo "<li>".$value . "</li>";
// Line below used to show column name and corresponding value
//echo "<li><strong>{$key}</strong>/<em>{$value}</em></li>";
}
}
}
echo "</ul>";
예상 HTML 출력
<ul>
<li>value1</li>
<li>value3</li>
<li>value4</li>
<li>value5</li>
</ul>
전류 출력
<ul>
<li>1</li>
<li>1</li>
<li>value1</li>
<li>value1</li>
<li>value3</li>
<li>value3</li>
<li>value4</li>
<li>value4</li>
<li>value5</li>
<li>value5</li>
</ul>
현재 문제
당신이 볼 수 있듯이, 나는 현재의 두 배에 모든 것을 가지고, 어떤 이상한 이유로, 나는 행 ID를 얻고, 또는 내가 가정 데이터베이스에 새 행을 추가 할 때 두 번째 행을 얻지 못한다고 생각하면됩니다. 나는이 while
루프가 나를 통과하는 것을 허용 할
- 이해하는 바로는
<ul> <li>0/1</li> <li>id/1</li> <li>1/value1</li> <li>field1/value1</li> <li>3/value3</li> <li>field3/value3</li> <li>4/value4</li> <li>field4/value4</li> <li>5/value5</li> <li>field5/value5</li> </ul>
: 주석 줄을 사용
는대체 코드
,이 출력을 얻을 데이터베이스의 각 행
- 루프는
while
루프와 유사하지만 데이터베이스 항목을 통과하는 대신array
의 키/값 쌍을 통과합니다. 나는이 쓰기로 내가 궁금해 시작 했어- outloud 생각
(I이 이전의 진술에 대해 잘못 생각하는 경우 정정 해줘 주시기 바랍니다.)
질문,
while
및foreach
이 중복 된 것처럼 보이면 두 가지 모두 내 중복을 유발할 수있는 값을 구문 분석하는 것처럼 보입니다. - 행 번호 (이 경우
1
)가 키가 아닐까요? 기본적으로
아마 때문에 $의 Q의 존재 mysqli_query로 설정되고 잠시 동안 설정 되는가? 어쩌면'while ($ r = mysqli_fetch_array ($ q))'를 시도 할 것인가? –
동일한 결과, 즉 동일한 출력을 생성합니다. – davewoodhall