我在數據庫上執行請求,返回array
。我正在使用一個foreach
循環來檢查值。mysqli_fetch_array()foreach循環重複
數據庫(僅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,還是讓我承擔考慮到我向數據庫添加新行時沒有第二行。
備用碼
使用註釋行,我得到這樣的輸出:
<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
循環與while
循環類似,但它不通過數據庫條目,而是經過array
中的鍵/值對。
(請隨時糾正我,如果我錯了,這些以前的陳述。)
念Wo思考
- 我開始懷疑,因爲我寫這篇文章問題,如果
while
和foreach
似乎有點多餘,因爲兩者似乎都會解析這些值,可能會導致我的副本......? - 是不是行號(在這種情況下是
1
)是一個關鍵?
也許是因爲$ q是設置爲mysqli_query,並在此期間設置?也許試試'while($ r = mysqli_fetch_array($ q))'? –
這產生相同的結果,即兩倍相同的輸出 – davewoodhall