如何正确地从Mysql回收数据

时间:2014-12-07 18:15:29

标签: php mysql

我有一个用PHP编写的迷你游戏。我想为它建立一个高分榜。但我无法正确回显数据。我的数据库

+--------+----------+----------------------------------+---------------------+------+------+
| UserID | Username | Password                         | EmailAddress        | win  | lost |
+--------+----------+----------------------------------+---------------------+------+------+
|      1 | utku     | e10adc3949ba59abbe56e057f20f883e | utku@utku.com       |    3 |    6 |
|      2 | utku2    | e10adc3949ba59abbe56e057f20f883e | utku@sda.com        |    5 |   15 |
|      3 | utku3    | e10adc3949ba59abbe56e057f20f883e | sad                 |    0 |    0 |
+--------+----------+----------------------------------+---------------------+------+------+

我试图用这段代码回应他们(我在另一个问题的主题中找到了它)

<?php include "base.php"; ?>

<?
$query="SELECT Username,win,lost FROM users ORDER BY win";
$results = mysql_query($query);

while ($row = mysql_fetch_array($results)) {
    echo '<tr>';
    foreach($row as $field) {
        echo '<td>' . htmlspecialchars($field) . '</td>';
    }
    echo '</tr><br>';
}
?>

它打印像这样的数据

utku3utku30000
utkuutku3366
utku2utku2551515

但我想以这种形式打印它们

Username  Win  Lost
utku2      5    15
utku       3    6
utku3      0    0

我该怎么办?我是PHP的新手

3 个答案:

答案 0 :(得分:2)

您不应该使用mysql_,因为它已过时,将在未来的php版本中删除。 您应该切换到mysqli_PDO。 (Overview of the MySQL PHP drivers > Choosing an API

你的问题是:
array mysql_fetch_array ( resource $result [, int $result_type = MYSQL_BOTH ] )

MYSQL_BOTH:[...]By using MYSQL_BOTH (default), you'll get an array with both associative and number indices.[...]

这就是为什么你每列两次。

快速解决方法是使用MYSQL_NUMMYSQL_ASSOC

mysql_fetch_array($results, MYSQL_ASSOC)

答案 1 :(得分:1)

您不应在没有tr, td标记的情况下打印table。你也没有添加th。可以试试这个

echo '<table><tr><th>User Name</th><th>Win</th><th>Lost</th></tr>';
while ($row = mysql_fetch_array($results)) {
    echo '<tr><td>'.$row['Username'].'</td><td>'.$row['win'].'</td><td>'.$row['lost'].'</td></tr>';
}
echo '</table>';

答案 2 :(得分:-2)

你不需要foreach循环,因为while循环正在进行递归迭代,这就是你有两次结果的原因:

while ($row = mysql_fetch_array($results)) {
    echo '<tr>';
        echo '<td>' . htmlspecialchars($field['Username']) . '</td>';
        echo '<td>' . htmlspecialchars($field['win']) . '</td>';
        echo '<td>' . htmlspecialchars($field['lost']) . '</td>';
    echo '</tr><br>';
}