MySQL循环列

时间:2016-11-19 21:48:21

标签: php html mysql database mysqli

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

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并使其执行两次?也许是一个错字?

3 个答案:

答案 0 :(得分:0)

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

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

示例,使用$rowmysqli_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" } )执行操作只会获取以下内容

{{1}}

参考

答案 1 :(得分:0)

希望这适合你

$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/>";
    }

答案 2 :(得分:0)

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

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

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

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