Я пытаюсь создать сценарий обновления, но где-то возникает ошибка, из-за которой цикл while никогда не заканчивается.
Что я пытаюсь сделать, так это установить поле базы данных с результатом кода обновления. Поэтому у меня есть 2 цикла while. Первый цикл должен пройти через все user_id, второй цикл while должен вычислить процент всех полей профиля, которые заполнил каждый пользователь.
Я предполагаю, что это логическая ошибка, потому что если я запускаю код обновления без первого цикла while, указав точный user_id, он работает нормально. Или может быть проблема в том, что некоторые 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++;
}
Кто-нибудь видит здесь проблему?
С наилучшими пожеланиями
UPDATE
? Кроме того, для отладки добавьте в свой код несколько операторов эха, чтобы вы могли видеть, что происходит и где вы можете застрять. Вы уверены, что цикл не заканчивается, а просто занимает много времени? - person Brad   schedule 03.12.2012UPDATE table_users SET user_profilepercentage=AVG(profilevalue_1, profilevalue_2, profilevalue_3)
или что-то подобное. - person Brad   schedule 03.12.2012$resultpercentage
будет содержать 1 значение из-за вашегоLIMIT 1
в SQL-запросе, верно? Итак, что же представляет собой следующий циклwhile
? И следующееcount
всегда будет только 1, что сводит на нет циклfor
, который следует за ним. - person rg88   schedule 03.12.2012UPDATE
коснется всего, что разрешено пунктомWHERE
. Если нет пунктаWHERE
, все будет обновлено. Попытайся. - person Brad   schedule 03.12.2012