[英]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.