使用mysql中动态生成的值更新单个列的多行

时间:2016-08-02 11:26:39

标签: mysql

在数据库表中,我有以下列

ID   CLASS        HEIGHT
R0   RECTANGLE     40px
R1   RECTANGLE     40px
S0   SQUARE        20px
R2   RECTANGLE     40px
R3   RECTANGLE     40px

现在,如果我要删除ID ='R1'的行,我想将R2的ID更改为R1,将R3更改为R2,依此类推。  如果任何行被删除,那么我试过:

 $numofRectangles // total number of rows with class='RECTANGLE'
 for($i=0;$i<$numofRectangles;$i++)
  {
   $RectId="R".$i;
    $updatequery=mysql_query("update TABLE1 set ID='$RectId' where CLASS='RECTANGLE'");
  }

但是,这是使用最后一次迭代更新所有ID

2 个答案:

答案 0 :(得分:1)

这绝对正常,因为每次执行更新查询时,它都会更新所有具有&#34; RECTANGLE&#34;在他们的类列中,您应该在where子句中使用更多特定标识符。

这应该有用。

$idnum=0;
$query=mysql_query("select ID from TABLE1 where class='RECTANGLE'");
while($row=mysql_fetch_assoc($query))
{
    mysql_query("update TABLE1 set ID='R$idnum' where ID='".$row["ID"]."'");
}

答案 1 :(得分:0)

您需要WHERE条件中的当前矩形ID,以便不更新所有矩形。

UPDATE TABLE1 set ID='$RectId' WHERE ID='$CurrentRectId'