gpt4 book ai didi

php - mysqli_fetch_array() foreach 循环重复

转载 作者:可可西里 更新时间:2023-11-01 07:49:44 25 4
gpt4 key购买 nike

我正在对返回数组 的数据库执行请求。我正在使用 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 循环可以让我遍历数据库中的每一行。
  • foreach 循环类似于 while 循环,但它不是遍历数据库条目,而是遍历 array< 中的键/值对

(如果我对这些前面的陈述有误,请随时纠正我。)

大声思考

  • 我开始怀疑,当我写这个问题时,whileforeach 是否看起来有点多余,因为它们似乎都会解析值,可能导致我的副本...?
  • 行号(在本例中为 1)不是键吗?

最佳答案

默认情况下,mysqli_fetch_array() 返回关联数组($key => $value)和数值数组(0 => value code>),这就是为什么你会得到重复的原因 - 一些条目以列名作为键,其他条目有一个数字索引。

如果你想要一个关联数组,你可以使用:

 mysqli_fetch_array($q, MYSQLI_ASSOC);
//or
mysqli_fetch_assoc($q);

或者对于数值数组:

 mysqli_fetch_array($q, MYSQLI_NUM);
//or
mysqli_fetch_row($q);

更多信息:http://www.php.net/manual/en/mysqli-result.fetch-array.php

关于php - mysqli_fetch_array() foreach 循环重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20649330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com