更新查询不在PHP中循环执行

时间:2015-05-10 05:52:17

标签: php mysql loops

我不知道这段代码有什么问题。数组中的值很好,但是当我执行查询时,会更新。

<?php 
  $loop=0;
  while($loop< sizeof($stararray)){
    $starsquery="update updatedstars set id='$distcodes[$loop]' ,stars='$stararray[$loop]'";
    //$starsquery="insert into updatedstars (id,stars) values ( '$distcodes[$loop]','$stararray[$loop]')";
    echo $starsquery;
    mysqli_query($mysqli, $starsquery);
    $loop++;
  }
?>

1 个答案:

答案 0 :(得分:1)

问题是您的SQL语句。您的PHP代码将正常运行。

您正在执行SQL语句

UPDATE `updatedstars` SET `id` = SOME_ID, `stars` = SOME_STARS

这是您根据正在运行的while循环指示所需的SQL语句。上述语句会将updatedstars表中的每一行更新为该查询中的值。这可能不好不是您想要的设计

您要做的是将更新限制为单行,即具有正确id值的行。

您的查询应该是

UPDATE `updatedstars` SET `stars` = SOME_STARS WHERE `id` = SOME_ID

在您的PHP代码中,那是

$starsquery="update updatedstars set stars='$stararray[$loop]' where id='$distcodes[$loop]'";

我强烈建议您阅读有关MySQL的INSERTUPDATESELECT查询。