2012-04-10 3 views
1

Ich habe eine Tabelle wie folgt aus:UPDATE alle Zeilen nach der 2. Reihe, von 1 auf diese Zeilen ADDING

id subject  position   visible 

1 Home    1    1 
2 About us   2    1 
3 Our partners  3    1 
18 Products   4    1 
19 Extra    5    0 

Ich möchte 1 Nummer hinzufügen, um alle Zeilen nach Position = 2, wie folgt aus:

id subject  position   visible 

1 Home    1    1 
2 About us   2    1 
3 Our partners  4    1 
18 Products   5    1 
19 Extra    6    0 

ich so versucht, aber das funktioniert nicht:

$row=mysql_query("SELECT * FROM table"); 
$count=mysql_num_rows($row); 
$position=3; 
$add=($position+1); 
while($position<=$count) 
{ 
    $sql="UPDATE subjects SET position=$add WHERE position=$position"; 
    mysql_query($sql); 
    $add++; 
    $position++; 
} 

Nach oben Code anwenden, sieht meine Tabelle wie folgt aus:

id subject  position   visible 

1 Home    1    1 
2 About us   2    1 
3 Our partners  6    1 
18 Products   6    1 
19 Extra    6    0 

Gibt es eine Lösung?

+1

Bitte sagen Sie mir, Sie sind nicht Updates in Ihrer Schleife zu tun. – PeeHaa

Antwort

11

Warum nicht einfach:

UPDATE subjects SET position=position+1 WHERE position>2 
+0

Danke.Ich habe es jetzt versucht, aber es macht Position (1,2,7,8,9) statt (1,2,4,5,6) –

+1

Das liegt daran, dass Sie es ONCE, nicht in einer Schleife ausführen sollten. Einfach alles außer einer einzigen "mysql_query" mit dem darin loswerden. –

+0

oops! Vielen Dank! Es funktioniert. Vielen Dank –

3
UPDATE subjects SET position=position + 1 WHERE position >= 3 
+0

Thanks.i versucht.aber es macht Position (1,2,7,8,9) statt (1,2,4,5,6) .i kann nicht verstehen warum! –

1
update subjects set position = position +1 where position >2 
Verwandte Themen