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 エラー ログを確認しましたが、何も表示されませんでした。クエリはすぐに実行されますが、うまくいきません。ほんの数回です。これは、ページにあるデバッグ出力のサンプルです

チームを選択するクエリ:SELECT * FROM powerrankings WHERE team='Panthers'

チーム:パンサーズ 旧ランク:5 新ランク:1

array(7) { ["ランキング"]=> string(1) "5" ["チーム"]=> string(8) "パンサーズ" ["コメント"]=> string(0) "" ["変更" ]=> 文字列(1) "0" ["レコード"]=> 文字列(5) "0-0-0" ["低"]=> 文字列(1) "5" ["高"]=> 文字列(1) "5" } 配列ダンプ:

チームを選択するクエリ:SELECT * FROM powerrankings WHERE team='Bills'

チーム:Bills 旧ランク:0 新ランク:2

NULL 配列ダンプ:

チームを選択するクエリ:SELECT * FROM powerrankings WHERE team='Falcons'

チーム:Falcons 旧ランク:0 新ランク:3

NULL 配列ダンプ:

チームを選択するクエリ:SELECT * FROM powerrankings WHERE team='Cardinals'

チーム:カージナルス 旧ランク:0 新ランク:4

NULL 配列ダンプ:

チームを選択するクエリ:SELECT * FROM powerrankings WHERE team='Ravens'

チーム:Ravens 旧ランク:0 新ランク:5

NULL 配列ダンプ:

チームを選択するクエリ:SELECT * FROM powerrankings WHERE team='Bears'

チーム:ベアーズ 旧ランク:6 新ランク:6

array(7) { ["ランキング"]=> string(1) "6" ["チーム"]=> string(5) "ベアーズ" ["コメント"]=> string(0) "" ["change" ]=> 文字列(1) "0" ["レコード"]=> 文字列(5) "0-0-0" ["低"]=> 文字列(1) "6" ["高"]=> 文字列(1) "6" }

機能する場合と機能しない場合があります。どんな助けでも大歓迎です。

4

1 に答える 1

0

NULLクエリに一致する行がないことを意味します。"Bills" という名前のチームはありません。

NULLランキングを更新する前にコードをチェックしてください

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