开发者

Foreach Just Echoing First Entry

Apologies if I should know better, but I've been struggling for quite a while with this one.

I have a mysql db with 300 rows. It contains 4 columns, "eventid", "player1", "player2", "score". In the game, player1 gives various others (player2) a score out of 100.

What I'm trying to do is show the logged in user (player1) a table of 开发者_StackOverflowthe "player2"s they have scored.

My code looks like this:

$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>";

    }

When I run this all I can see is

144

73 got 44

but I was hoping to see 144 rows of "player 2" got "player 2's score".

What am I doing wrong?


You have a semicolon after the for-each loop; that shouldn't be there.


In addition: mysql_fetch_assoc will only return the pointer to your first row in the resultset. That is why you'll end up with only one row being printed.

Change your code to:

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


It looks like there is an anomolous semi colon after the for each statement


$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>";

    }


mysql_fetch_assoc returns an associative array of a single record.

Check the docs for an example of what you should be doing: http://uk3.php.net/mysql_fetch_assoc

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜