2010-10-29 88 views
2

道歉,如果我应该知道更好,但我一直在这个挣扎了很长一段时间。Foreach只是回声第一次输入

我有一个300行的MySQL数据库。它包含4列,“eventid”,“player1”,“player2”,“score”。在游戏中,玩家1给出各种其他玩家(玩家2)100分。

我想要做的是向登录用户(玩家1)显示他们得分的“玩家2”的表格。

我的代码如下所示:

$currentuserid = 00001; 

$opponent_data = mysql_query("SELECT * FROM `scores` WHERE `player1` = $currentuserid ORDER by score"); 

$opponent_count = mysql_num_rows($opponent_data); 

    echo $opponent_count.'<br>'; // Just to test -> and it shows I have 144 entries in the array, i.e. 144 player 2's that player 1 has scored 

$opponent_scores = mysql_fetch_assoc($opponent_data); 

$runrows = $opponent_scores; 

foreach ($opponent_scores as &$runrows); 

    { 
    $id = $runrows['eventid']; 
    $player2 = $runrows['player2']; 
    $score = $runrows['score']; 


    echo $player2." got ".$score; 

    echo "<br>"; 

    } 

当我跑这一切我能看到的是

73得到44

,但我希望看144行“玩家2”获得“玩家2的得分”。

我在做什么错?

回答

6

另外一个anomolous分号:mysql_fetch_assoc将只有指针返回到您的第一行中的结果集。这就是为什么你最终只会打印一行。

你的代码更改为:

while($opponent=mysql_fetch_assoc($opponent_data)) { 
    echo $opponent['player2']." got ".$opponent['score']; 
} 
+1

非常感谢,特别是解释了mysql_fetch_assoc正在做什么 - 我认为这是获取所有行。 – 2010-10-29 14:14:18

9

在for-each循环后面有一个分号;那不应该在那里。

+0

感谢,以及斑点。 – 2010-10-29 14:14:34

1

它看起来像有后为每个语句

1
$currentuserid = 00001; 

$opponent_data = mysql_query("SELECT * FROM `scores` WHERE `player1` = $currentuserid ORDER by score"); 

$opponent_count = mysql_num_rows($opponent_data); 

    echo $opponent_count.'<br>'; // Just to test -> and it shows I have 144 entries in the array, i.e. 144 player 2's that player 1 has scored 

$opponent_scores = mysql_fetch_assoc($opponent_data); 

foreach ($opponent_scores as $row); 

    { 
    $id = $row['eventid']; 
    $player2 = $row['player2']; 
    $score = $row['score']; 


    echo $player2." got ".$score; 

    echo "<br>"; 

    } 
1

mysql_fetch_assoc返回一个记录的关联数组。

检查文档为你应该做一个例子:http://uk3.php.net/mysql_fetch_assoc

while ($row = mysql_fetch_assoc($opponent_scores)) { 
    // var_dump($row); 
}