用于MySQL更新的多个PHP``` for``循环

用于MySQL更新的多个PHP``` for``循环,php,mysql,Php,Mysql,我需要更新表中的一列,但为了更新,我只需要2个循环。但问题是它没有发生 而不是得到这样的东西: UPDATE sample_var set var_id="82" where id=195288 UPDATE sample_var set var_id="83" where id=195289 UPDATE sample_var set var_id="84" where id=195290 UPDATE sample_var set var_id="85" where id=195291

我需要更新表中的一列,但为了更新,我只需要2个
循环。但问题是它没有发生

而不是得到这样的东西:

UPDATE sample_var set var_id="82" where id=195288

UPDATE sample_var set var_id="83" where id=195289

UPDATE sample_var set var_id="84" where id=195290

UPDATE sample_var set var_id="85" where id=195291
(我只是
echo$sql;
看看我会得到什么)

我明白了:

UPDATE sample_var set var_id="82" where id=195288

UPDATE sample_var set var_id="83" where id=195288

UPDATE sample_var set var_id="84" where id=195288

UPDATE sample_var set var_id="85" where id=195288
当我执行下面的语句时,数据只会覆盖它自己,每个更新的行都会保留最后一个值(在本例中,每行的var_id=85)

下面是我在这个特殊情况下使用的代码块:

for($i=0;$i<$foo_count;$i++){

    for($a=0;$a<$bar_count;$a++){

       $update_SQL= 'UPDATE sample_var set var_id="'.$bar[$a][0].'" where id='.$foo[$i][0];

          DataBase::ExecuteStatement($update_SQL);

    }    

}

对于($i=0;$i它应该是这样的:

$bar = array('82','83','84','85');
$foo = array(195288,195289,195290,195291);

$bar_count = count($bar);
for($a=0;$a<$bar_count;$a++){

   $update_SQL= 'UPDATE sample_var set var_id="'.$bar[$a].'" where id='.$foo[$a];
  DataBase::ExecuteStatement($update_SQL);

}  
$bar=array('82','83','84','85');
$foo=数组(195288195289195290195291);
$bar\u count=计数($bar);

对于($a=0;$a来说,应该是这样的:

$bar = array('82','83','84','85');
$foo = array(195288,195289,195290,195291);

$bar_count = count($bar);
for($a=0;$a<$bar_count;$a++){

   $update_SQL= 'UPDATE sample_var set var_id="'.$bar[$a].'" where id='.$foo[$a];
  DataBase::ExecuteStatement($update_SQL);

}  
$bar=array('82','83','84','85');
$foo=数组(195288195289195290195291);
$bar\u count=计数($bar);

对于($a=0;$a您正在循环遍历$foo\u count和$bar\u count的所有可能组合,这就是您看到所描述问题的原因

假设
$foo\u count==$bar\u count
,您可以执行以下操作:

for($i=0; $i < $foo_count; $i++){

   $update_SQL= 'UPDATE sample_var set var_id="'. $bar[$a][0] .'" where id='. $foo[$i][0];

   DataBase::ExecuteStatement($update_SQL);

}
for($i=0;$i<$foo\u count;$i++){
$update_SQL='update sample_var set var_id=“”.$bar[$a][0]”其中id='.$foo[$i][0];
数据库::ExecuteStatement($update\u SQL);
}

您正在循环使用$foo\u count和$bar\u count的所有可能组合,这就是您看到所述问题的原因

假设
$foo\u count==$bar\u count
,您可以执行以下操作:

for($i=0; $i < $foo_count; $i++){

   $update_SQL= 'UPDATE sample_var set var_id="'. $bar[$a][0] .'" where id='. $foo[$i][0];

   DataBase::ExecuteStatement($update_SQL);

}
for($i=0;$i<$foo\u count;$i++){
$update_SQL='update sample_var set var_id=“”.$bar[$a][0]”其中id='.$foo[$i][0];
数据库::ExecuteStatement($update\u SQL);
}

for($i=0;$i
for($i=0;$i我可能的解决方案)。然后插入SQL指令:

$bar = array("82","83","84","85");
$foo = array("195288","195289","195290","195291");
$updateValues = "";

for($i=0;$i<count($bar);$i++){
    $updateValues .= "UPDATE sample_var SET var_id='".$bar[$i]."' WHERE id='".$foo[$i]."';";
}
DataBase::ExecuteStatement($updateValues);
$bar=数组(“82”、“83”、“84”、“85”);
$foo=数组(“195288”、“195289”、“195290”、“195291”);
$UpdateValue=“”;

对于($i=0;$i我可能的解决方案。然后插入SQL指令:

$bar = array("82","83","84","85");
$foo = array("195288","195289","195290","195291");
$updateValues = "";

for($i=0;$i<count($bar);$i++){
    $updateValues .= "UPDATE sample_var SET var_id='".$bar[$i]."' WHERE id='".$foo[$i]."';";
}
DataBase::ExecuteStatement($updateValues);
$bar=数组(“82”、“83”、“84”、“85”);
$foo=数组(“195288”、“195289”、“195290”、“195291”);
$UpdateValue=“”;

对于($i=0;$iwhy 2个循环,如果第二个键是固定的?$bar[$a][0]和$foo[$i][0]这将始终提供相同的行。为什么使用静态?因为我从两个不同的位置提取数据,第一个是数组列表,其中包含我需要设置的数据(var_id=$data),第二个是需要更新的行的id,这是2个循环的原因为什么不使用一个数组,其中key是id,value是var_id(或类似的东西)?数组(195288=>82195289=>83195290=84..等等)?如果一个数组的长度大于/小于第二个数组,该怎么办?我不能这样合并它。$bar最多可以有20个输入,而$foo可以超过500。如果第一个变量达到最大值,它将重置并从头开始,而第二个变量达到最大值,然后查询结束(示例12345=>112346=>212347=>112348=>2等)如果第二个键是固定的,为什么要循环2次?$bar[$a][0]和$foo[$i][0]这将始终给出相同的行。为什么要使用静态?因为我从两个不同的位置提取数据,第一个是包含我需要设置的数据的数组列表(var_id=$data),第二个是需要更新的行的id,这是2个循环的原因为什么不使用一个数组,其中key是id,value是var_id(或类似的东西)?数组(195288=>82195289=>83195290=84..等等)?如果一个数组的长度大于/小于第二个数组,该怎么办?我不能这样合并它。$bar最多可以有20个输入,而$foo可以超过500。如果第一个变量达到最大值,它将重置并从头开始,而第二个变量达到最大值,然后查询结束(例如12345=>112346=>212347=>112348=>2等)当,你比我快4秒回答!当,你比我快4秒回答!这就是问题所在:D$foo_count!=$bar_count。$bar_count最多可以是20,$foo_count最多可以是500。关键是存储在$foo中的数据会重复自身(如果范围从1到10,当它到达时,循环会迫使他重新开始,同时id继续达到其最大值)这就是问题所在:D$foo_count!=$bar_count.$bar_count的最大值可以是20,$foo_count的最大值可以是500。关键是存储在$foo中的数据会重复自身(如果范围在1到10之间,当达到该范围时,循环将强制他从头开始,而id将继续达到其最大值)