在数据库表中,我有以下列
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
答案 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'