0

我正在为疯狂的 nfl 联盟创建一个可排序的力量排名列表。如果你想看到它在

http://www.stephenjesse.com/projects/powerrankings/index.php

当我尝试从上次保存的排名计算更改时遇到的问题,用于获取上次排名的查询返回 null 有时会导致更改错误,因为它认为旧排名为 0 而不是。这是 for 循环的基本片段

foreach($order as $team)
{
    $query="SELECT * FROM powerrankings WHERE team='$team'";
    echo "query to select team:".$query."\n\n";
    $result=mysqli_query($db,$query) or die(mysqli_error($db));
    $selectedTeam=$result->fetch_assoc();
    $oldRank=intval($selectedTeam['ranking']);
    $change=$oldRank-$rank;

我不太确定出了什么问题,我检查了 apache 错误日志,我尝试输出 mysqli_errer() 并且我检查了 mysql.log 错误日志,但没有任何显示。我尝试在查询之间睡 5 秒以防万一查询被快速触发,但这不起作用。它只有几次。这是我在页面上的调试输出示例

查询以选择团队:SELECT * FROM powerrankings WHERE team='Panthers'

球队:黑豹队 旧排名:5 新排名:1

array(7) { ["ranking"]=> string(1) "5" ["team"]=> string(8) "Panthers" ["comment"]=> string(0) "" ["change" ]=> string(1) "0" ["record"]=> string(5) "0-0-0" ["low"]=> string(1) "5" ["high"]=> string (1) "5" } 数组转储:

查询以选择团队:SELECT * FROM powerrankings WHERE team='Bills'

团队:Bills 旧排名:0 新排名:2

空数组转储:

查询以选择团队:SELECT * FROM powerrankings WHERE team='Falcons'

球队:猎鹰 旧排名:0 新排名:3

空数组转储:

查询选择球队:SELECT * FROM powerrankings WHERE team='Cardinals'

球队:红雀队 旧排名:0 新排名:4

空数组转储:

查询以选择团队:SELECT * FROM powerrankings WHERE team='Ravens'

球队:乌鸦队 旧排名:0 新排名:5

空数组转储:

查询以选择团队:SELECT * FROM powerrankings WHERE team='Bears'

团队:熊 旧等级:6 新等级:6

array(7) { ["ranking"]=> string(1) "6" ["team"]=> string(5) "Bears" ["comment"]=> string(0) "" ["change" ]=> string(1) "0" ["record"]=> string(5) "0-0-0" ["low"]=> string(1) "6" ["high"]=> string (1) "6" }

你可以看到它有时有效,有时无效。任何帮助将不胜感激。

4

1 回答 1

0

NULL表示没有匹配的行供您查询:没有名为“Bills”的团队。

NULL在更新排名之前检查您的代码

if ($selected_team = $result->fetch_assoc()) {
    // update ranking
}
于 2013-03-22T16:45:18.170 回答