Я выполняю запрос в базе данных, которая возвращает array
. Я использую цикл foreach
для прохождения значений.mysqli_fetch_array() dupeates foreach loop
Database (только 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>
Текущий выпуск
Как вы можете видеть, я тока есть все, что в два раза, и по какой-то причине Wierd, я получаю строку ID, или так я предполагаю, учитывая, что я не получаю вторую строку, когда добавляю новую строку в базу данных.
Альтернативный код
Используя комментируемой линию, я получаю этот выход:
<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
петля позволит мне пройти каждая строка из базы данных.- A
foreach
loop похож на циклwhile
, но вместо того, чтобы проходить через записи базы данных, он проходит через пары ключ/значение изarray
.
(Пожалуйста, не стесняйтесь, поправьте меня, если я ошибаюсь, об этих предыдущих заявлениях.)
мышление жар угас
- Я начинаю задаваться вопросом, как я пишу это вопрос, если
while
иforeach
кажутся излишними в том, что оба кажутся синтаксическими анализами, вероятно, вызывая мои дубликаты ...? - Не будет ли номер строки (в данном случае
1
) ключом?
Может быть, это потому, что $ д существо установить как mysqli_query, а также быть установленным в то время? Может быть, попробуйте 'while ($ r = mysqli_fetch_array ($ q))'? –
Это дает тот же результат, т. Е. В два раза больше того же выхода – davewoodhall