我正在为疯狂的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){ [ “排名”] => string(1)“5” [ “团队”] => string(8)“黑豹” [ “注释”] => string(0)“” [ “变化”] => string(1)“0” [ “记录”] => string(5)“0-0-0” [ “低”] => string(1)“5” [ “高”] => string(1)“5” } 数组转储:
查询选择团队:SELECT * FROM powerrankings WHERE team ='Bills'
队:法案 旧职级:0 新排名:2
NULL 数组转储:
查询选择团队:SELECT * FROM powerrankings WHERE team ='Falcons'
队:猎鹰 旧职级:0 新排名:3
NULL 数组转储:
选择团队的查询:SELECT * FROM powerrankings WHERE team ='Cardinals'
队:红雀 旧职级:0 新排名:4
NULL 数组转储:
查询选择团队:SELECT * FROM powerrankings WHERE team ='Ravens'
队:掠夺 旧职级:0 新排名:5
NULL 数组转储:
查询选择团队:SELECT * FROM powerrankings WHERE team ='Bears'
队:熊 老排名:6 新排名:6
array(7){ [ “排名”] => string(1)“6” [ “团队”] => string(5)“Bears” [ “注释”] => string(0)“” [ “变化”] => string(1)“0” [ “记录”] => string(5)“0-0-0” [ “低”] => string(1)“6” [ “高”] => string(1)“6” }
a你可以看到它有时会起作用,有时却看不到。任何帮助将不胜感激。
答案 0 :(得分:0)
NULL
表示您没有匹配的行查询:没有名为“Bills”的团队。
在更新排名
之前,请检查NULL
的代码
if ($selected_team = $result->fetch_assoc()) {
// update ranking
}