2014-12-07 50 views
-3

我有一個用PHP編寫的迷你遊戲。我想爲它建立一個高分區。但我無法正確迴應數據。我的數據庫如何從Mysql正確迴應數據

+--------+----------+----------------------------------+---------------------+------+------+ 
| UserID | Username | Password       | EmailAddress  | win | lost | 
+--------+----------+----------------------------------+---------------------+------+------+ 
|  1 | utku  | e10adc3949ba59abbe56e057f20f883e | [email protected]  | 3 | 6 | 
|  2 | utku2 | e10adc3949ba59abbe56e057f20f883e | [email protected]  | 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>'; 
} 
?> 

它打印DATAS這樣

utku3utku30000 
utkuutku3366 
utku2utku2551515 

但我想以這種形式打印它們

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

我該怎麼做。我是新的PHP

+1

的DOC告訴你['數組mysql_fetch_array($資源結果[摘要$ result_type的= MYSQL_BOTH])'](HTTP:// PHP。 net/manual/en/function.mysql-fetch-array.php)和'MYSQL_BOTH':'通過使用MYSQL_BOTH(默認),你將得到一個包含關聯和數字索引的數組。'這就是爲什麼你得到每一列兩次。 – 2014-12-07 18:18:53

回答

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>'; 
+0

我認爲最主要的問題就是一切都得到了echo'd兩次 – 2014-12-07 18:20:17

+0

它仍然打印值的兩倍 – JayGatsby 2014-12-07 18:22:11

+0

更新了我的帖子@JayGatsby。希望現在它會幫助你! – MH2K9 2014-12-07 18:25:32

-2

你不需要foreach循環,因爲while循環做遞歸iteraction,這就是爲什麼你有兩次的結果:

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>'; 
} 
+0

不用,那跟它沒什麼關係。 while循環遍歷每行,而foreach遍歷每個字段 – 2014-12-07 18:22:23

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) 
相關問題