업그레이드 스크립트를 만들려고하지만 while 루프가 끝나지 않아 오류가있는 것 같습니다.php/mysql 업그레이드 스크립트에서 오류가 발생했습니다.
내가하려는 것은 업그레이드 코드의 결과로 데이터베이스 필드를 설정하는 것입니다. 그러므로 나는 while 회 돌이가 2 개있다. 첫 번째 루프는 모든 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 문으로 SQL에서이 모든 작업을 수행 할 수 없었습니까? 또한 디버깅을 위해 코드에 echo 문을 추가하여 진행 상황과 중단되는 부분을 확인할 수 있습니다. 오랜 시간이 걸리지 않고 루프가 끝나지 않았다고 확신합니까? – Brad
안녕하세요 Brad, 단일 SQL UPDATE 문을 사용하면 어떻게됩니까? SQL에 루프 기능이 있습니까? 그리고 예, while 루프가 끝나지 않는 것처럼 보였습니다. <5로 시도했지만 웹 사이트를 사용할 수없고 서버 부하가 높습니다. –
어떤 종류의 루프가 필요하다고 생각하지 않습니다. 그렇습니까? 당신이하려고하는 것을 묘사 할 수 있습니까? 나는 당신의 코드를 읽고 있는데, 당신이 성취하고자하는 것이 무엇인지 분명하지 않습니다. 'UPDATE table_users SET user_profilepercentage = AVG (profilevalue_1, profilevalue_2, profilevalue_3)'또는 이와 유사한 것을 할 수있는 것처럼 보입니다. – Brad