来自foreach()中数据库的回显信息仅显示第一行的信息

时间:2014-04-25 16:02:25

标签: php mysql

我有一个包含用户信息的数据库。我希望让激活帐户的用户显示他们的姓名以及他们拥有多少积分。

因此数据库(users)中包含以下信息:

first_name|last_name|points|active
Joe       | Normal  |199   |1
Jane      | Average |50    |1

我用来打印的所有代码如下

$user_info = mysql_query("SELECT `first_name`, `last_name`, `points` FROM `users` WHERE `active`=1");
$user = mysql_fetch_array($user_info);

foreach($user as $key=>$value){
    echo 'INDEX: ' . $key , '   VALUE: ' . $value;
    echo '<br> Test get First name: ' .$value['first_name'];
    echo '<br>-------------------------------<br><br>';
}

这会显示以下内容

INDEX: 0 VALUE: Joe
Test get First name: J
-------------------------------

INDEX: first_name VALUE: Joe
Test get First name: J
-------------------------------

INDEX: 1 VALUE: Normal
Test get First name: T
-------------------------------

INDEX: last_name VALUE: Normal
Test get First name: T
-------------------------------

INDEX: 2 VALUE: 199
Test get First name: 1
-------------------------------

INDEX: points VALUE: 199
Test get First name: 1
-------------------------------

2 个答案:

答案 0 :(得分:0)

mysql_fetch_array获取一行并返回特定格式的数组。

要获取所有用户,请执行while循环:

$users = array();
while ($row = mysql_fetch_array($user_info)) {
    $users[] = $row;
}

现在你可以做到:

foreach($users as $key => $user){
    echo 'INDEX: ' . $key , '   VALUE: ' . $value;
    echo '<br> Test get First name: ' .$user['first_name'];
    echo '<br>-------------------------------<br><br>';
}

答案 1 :(得分:0)

mysql_fetch_array只从结果中读取一行。您的foreach循环遍历列,而不是行。

你需要循环调用它:

while ($row = mysql_fetch_array($user_info)) {
    echo '<br> Test get First name: ' . $row['first_name'];
    echo '<br>-------------------------------<br><br>';
}