php/mysql升级脚本中出现错误

php/mysql升级脚本中出现错误,php,mysql,while-loop,upgrade,Php,Mysql,While Loop,Upgrade,我正在尝试创建一个升级脚本,但在某个地方似乎出现了一个错误,导致while循环永不结束 我试图做的是用升级代码的结果设置一个数据库字段。因此我有两个while循环。第一个循环是通过所有用户id运行,第二个while循环是计算每个用户填写的所有概要文件字段的百分比 我想这是一个逻辑错误,因为如果我运行升级代码时没有第一个while循环,而是给出了确切的用户id,那么它就可以正常工作了。 或者可能是一些用户id不再存在的问题吗 请看一下代码: $count_userid = 1; w

我正在尝试创建一个升级脚本,但在某个地方似乎出现了一个错误,导致while循环永不结束

我试图做的是用升级代码的结果设置一个数据库字段。因此我有两个while循环。第一个循环是通过所有用户id运行,第二个while循环是计算每个用户填写的所有概要文件字段的百分比

我想这是一个逻辑错误,因为如果我运行升级代码时没有第一个while循环,而是给出了确切的用户id,那么它就可以正常工作了。 或者可能是一些用户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++;
        }
$count\u userid=1;
而($count\u userid<10000)
{  
//剖面百分比
$resultpercentage=mysql_query(“从profilevalue_user_id='$count_userid'LIMIT 1'的表_profilevalues中选择profilevalue_1、profilevalue_2、profilevalue_3”);
while($row=mysql\u fetch\u row($resultpercentage)){
$empty_count=0;
$count=计数($row);
对于($i=0;$i<$count;$i++)
如果($row[$i]==''| |$row[$i]=='-1'| |$row[$i]==='NULL')
$empty_count++;
$profile_percent_user=((int)(100*(1-$empty_count/($count-1));
//保存配置文件百分比
$profile\u percentage\u query=“UPDATE table\u users SET user\u profilepercentage='$profile\u percent\u user',其中user\u id='$count\u userid'LIMIT 1”;
$database->database\u query($profile\u percentage\u query);
} 
$count_userid++;
}
有人看到问题了吗


致以最诚挚的问候

首先,$resultpercentage将包含1个值,因为您在SQL查询中的“限制1”,对吗?那么,在循环时,下面是什么?下面的计数只会是1,它会对后面的for循环求反


tl;dr:删除“限制1”,这样就可以迭代所有结果。

只是浏览一下代码,但为什么不能在SQL中用一条
UPDATE
语句来完成这一切?另外,为了进行调试,在代码中添加一些echo语句,这样您就可以看到正在发生的事情,以及您可能遇到的问题。你确定循环不会结束,而不是花很长时间吗?你好,Brad,你会如何用一条SQL UPDATE语句来实现这一点?SQL有循环函数吗?是的,while循环似乎永远不会结束,我试过了,我不相信有任何类型的循环需要,是吗?你能描述一下你想做什么吗?我正在通读你的代码,但我不清楚你想实现什么。看起来你可以只做
updatetable\u users SET user\u profilepercentage=AVG(profilevalue\u 1,profilevalue\u 2,profilevalue\u 3)
或类似的事情。首先,
$resultpercentage
将包含1个值,因为SQL查询中有“
限制1
”,对吗?那么,在循环时,下面的
是什么?下面的
count
将仅为1,它将否定后面的
for
循环。循环用于对集合进行迭代。如果只有一个结果,则不需要循环。