ciao a tutti, ecco il mio problema
ho questa tabella nel database mysql:

tab1(id, campo1, campo2)


sto cercando di realizzare una funzione che scambia l'id che gli passo come parametro con quello della riga precedente, in modo che poi quando stampo la tabella la riga interessata risulta spostata di una posizione in alto.

la funzione prende in ingresso l' id della riga da spostare in su, si ricava l'id della riga precedente, e poi effettuo uno scambio ponendo provvisoriamente a zero l'id della riga precedente.

Codice PHP:
function riga_up($id){  
$risultato mysql_query("SELECT id FROM `tab1`"); 
while (
$riga mysql_fetch_array($risultatoMYSQL_ASSOC)) { 
if(
$riga["id"]==$id) break; 
else 
$prec=$riga["id"];// trovo id della riga prima 

 
//metto provvisoriamente  id precendente a 0 
mysql_query("UPDATE `tab1` SET `id` = 0 WHERE `tab1`.`id` = '$prec'"); 
//scambio l'id maggiore con quello minore 
mysql_query("UPDATE `tab1` SET `id` = '$prec' WHERE `tab1`.`id` = '$id'"); 
mysql_query("UPDATE `tab1` SET `id` = '$id' WHERE `tab1`.`id` = 0");
 } 
il problema è che inspiegabilmente avvolte funziona e altre no...
possibile che l'errore sia nella query con cui seleziono tutti gli id all'inzio? (SELECT id FROM `tab1`)