0

アップグレードスクリプトを作成しようとしていますが、どこかでエラーが発生し、whileループが終了しないようです。

私がやろうとしているのは、アップグレードコードの結果を使用してデータベースフィールドを設定することです。そのため、2つのwhileループがあります。最初のループはすべてのuser_idを実行し、2番目のwhileループは、各ユーザーが入力したすべてのプロファイルフィールドのパーセンテージを計算します。

正確なuser_idを指定して、最初のwhileループなしでアップグレードコードを実行すると、正常に機能するため、これは論理的なエラーだと思います。または、一部のuser_idがもう存在しないことが問題である可能性がありますか?

コードを見てください:

$count_userid = 1;

       while($count_userid < 10000)
        {  

    // profile percentage

              $resultpercentage = mysql_query("SELECT profilevalue_1, profilevalue_2, profilevalue_3 FROM table_profilevalues WHERE profilevalue_user_id = '$count_userid' LIMIT 1");

            while ($row = mysql_fetch_row($resultpercentage)) {
              $empty_count = 0;
              $count = count($row);
              for ($i = 0; $i < $count; $i++)
                if ($row[$i] === '' || $row[$i] === '-1' || $row[$i] === 'NULL')
                  $empty_count++;
              $profile_percent_user = ((int) (100 * (1 - $empty_count / ($count - 1))));


              // SAVE PROFILE PERCENTAGE
              $profile_percentage_query = "UPDATE table_users SET user_profilepercentage='$profile_percent_user' WHERE user_id='$count_userid' LIMIT 1";
              $database->database_query($profile_percentage_query);
            } 

          $count_userid++;
        }

誰かがここで問題を見ますか?

よろしくお願いします

4

1 に答える 1

0

一つには、SQLクエリの「LIMIT1」のために$ resultpercentageに1つの値が含まれますよね?では、次のwhileループのループは何ですか?そして、次のカウントは1だけになり、その後に続くforループを無効にします。

tl; dr:「LIMIT1」を削除して、すべての結果を反復処理できるようにします。

于 2012-12-03T17:54:27.950 に答える