繁体   English   中英

MySQL循环列

[英]MySQL Loop Through Column

我正在开发一个小项目,我发现使用以下代码循环列值实际上是打印两次。 例如:

admin
admin
user
user
...

等等。 这是代码:

$sql = "SELECT username FROM users";
$result = mysqli_query($db, $sql);
while($row = mysqli_fetch_array($result))
{
foreach($row as $elem)
{
echo $elem . "<br/>";
}
}

while循环是否会影响foreach并使其执行两次? 也许是一个错字?

发生这种情况是因为mysqli_fetch_array()获取两次行 - 一次将列作为索引,一次使用带编号的索引。

您可以改为使用mysqli_fetch_assoc() ,或者使用mysqli_fetch_array($result, MYSQLI_ASSOC) ,它只会将列作为键来获取,而不是两者。

例如,使用mysqli_fetch_array()$row变量上的var_dump() mysqli_fetch_array()可以给出

array(2) {
  [0]=>
  string(5) "admin"
  ["username "]=>
  string(5) "admin"
}
array(2) {
  [0]=>
  string(4) "user"
  ["username "]=>
  string(4) "user"
}

正如您所知,它使用不同的键索引两次获取值。 按照上面的建议( mysqli_fetch_array($result, MYSQLI_ASSOC)mysqli_fetch_assoc($result) )执行操作只会获取以下内容

array(1) {
  ["username "]=>
  string(5) "admin"
}
array(1) {
  ["username "]=>
  string(4) "user"
}

参考

希望这对你有用

$sql = "SELECT username FROM users";
    $result = mysqli_query($db, $sql);
    while($row = mysqli_fetch_array($result))
    {
       $name = $row['username'];   // taking saving row in variable name 
    echo $name . "<br/>";
    }

如果要循环遍历每个元素,则需要将行放在数组中。

while($row = mysqli_fetch_array($result)){
    $rows[] = $row;
}

foreach($rows as $elem){
     echo $elem . "<br/>";
}

你现在正在做的是循环每一行,然后循环每一行的每个元素。 所以,是的,这将打印两次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM