【问题标题】:Fail to get all usernames from table无法从表中获取所有用户名
【发布时间】:2014-01-15 11:23:14
【问题描述】:

我正在尝试检索我的成员表中列出的所有用户名,将它们列在一个页面中并将它们链接到他们的用户个人资料。这就是我检索成员表的用户名的方式:

$result = mysqli_query($mysqli,"SELECT username FROM members");
$row = mysqli_fetch_array($result);
$username = $row['username']; 

为了链接它们,我将使用以下内容:

<?php 
foreach ($result as $row) {
?>
    <a href="#"><?php echo $username ?></a>
<?php
}
?>

问题是它只显示 1 个用户名,5 次。所以我觉得:

用户名1 用户名1 用户名1 用户名1 用户名1

而不是

用户名1 用户名2 用户名3 用户名4 用户名5

我做错了什么? (抱歉,最近开始学习 PHP/MYSQL,所以对它很陌生。

【问题讨论】:

    标签: php mysql database


    【解决方案1】:

    试试这个:

    $result = mysqli_query($mysqli,"SELECT username FROM members");
    $row = mysqli_fetch_array($result);
    
    <?php 
    foreach ($result as $row) {
        $username = $row['username']; 
    ?>
        <a href="#"><?php echo $username ?></a>
    <?php
    }
    ?>
    

    您需要获取行中每个项目的用户名。

    【讨论】:

    • $resultmysqli::result 资源对象,而不是结果数组。需要一个while 循环来获取多行。
    • @MichaelBerkowski 从 php 5.4 开始,mysqli_result 是可遍历的。
    • @dev-null-dweller 哇,我没看到。这确实令人惊讶且可能令人困惑,但也非常受欢迎
    【解决方案2】:
    $result = mysqli_query($mysqli,"SELECT username FROM members");
     $count=0;
    
    while($row = mysqli_fetch_array($result)){
    
     array[$count]['Rkey'] = $count;
     $array[$count]['username']= $row['username'];
     $count++;
    
    }
    
     mysqli_free_result($result);
        }
    

    打印值

    $res_count=count($array);

    for ($x=0;$x<$res_count;$x++)
    {
      echo $array[$x]['username'];
      }
    

    【讨论】:

    • 感谢您的意见,但这不是我想要的。我应该可以在任何我想要的地方打印它
    【解决方案3】:

    因为您只得到第一个结果。试试:

    $users = array();
    $result = mysqli_query($mysqli,"SELECT username FROM members");
    while($row = mysqli_fetch_assoc($result)){
      $users[] = $row['username']; 
    }
    
    <?php 
    foreach ($users as $user): ?>
    
    <a href="#"><?php echo $user; ?></a>
    <?php endforeach; ?>
    

    【讨论】:

    • 试试 mysqli_fetch_assoc 而不是 mysqli_fetch_array 看看是否可行。
    • 很高兴能提供帮助 - 是的,MySqli fetch 数组可以像这样使用,但使用 mysqli_fetch_assoc 更容易。数组可以这样使用: $row = $result->fetch_array(MYSQLI_ASSOC); - 但对我来说,恕我直言,太冗长了。玩得开心!
    • @chas688 再次感谢。一个快速的问题 > 我已经创建了一个个人资料页面,我想从同一个表中获取几列。然后我需要将它放入一个变量中,例如:$username = $row['username'];、$name = $row['name']; 等等。我会按照您刚刚解释/发布的方式做同样的事情,还是可以使用更简单的方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多