2016-08-02 9 views
0

In einer Datenbanktabelle aktualisiert habe ich die folgenden Spaltenmehrere Zeilen einer einzelnen Spalte mit dynamisch generierten Werte in mysql

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

Nun, wenn ich die Zeile mit der ID am Löschen = ‚R1‘, möchte ich ändern die ID von R2 als R1 und R3 als R2 und so weiter .. Wenn eine Zeile gelöscht wird, dann habe ich versucht:

$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'"); 
    } 

Aber dies ist updaing alle die ID mit der letzten Iteration

+1

Ich muss ein bisschen StackOverflowy sein und fragen, müssen Sie das wirklich tun? und warum? – Felype

Antwort

1

Das absolut normal ist, weil jedes Mal wenn Sie die Update-Abfrage ausführen es alle Spalten aktualisiert, die „Rechteck“ in ihrer Klasse Spalte sollten Sie mehr spesific Kennung in Ihrer where-Klausel verwenden.

Dies sollte funktionieren.

$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"]."'"); 
} 
+0

Danke, es funktioniert nach Erhöhung der ID in jeder Iteration – uddipana

+0

Yep sorry ich habe vergessen, es beim Schreiben hinzuzufügen ich war in Eile bei der Arbeit :) froh, es hat funktioniert. –

0

Sie benötigen die aktuelle Rechteck-ID in der WHERE-Bedingung, um nicht alle Rechtecke zu aktualisieren.

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

Verwandte Themen