Vamos a ver si se entiede la lógica, pero como un pseudocódigo.
Cita: A = 1
B = 2
Listar A, B = {1, 2}
C = A
A = B
B = C
Listar A, B = {2, 1}
Es un algoritmo de prgramación básica que se enseña en las primeras clases de programación en cualquier lenguaje.
La idea consiste en que si tienes dos variables o registros y necesitas invertir sus valores, necesitas una variable intermedia como depósito.
En el caso de bases de datos, se suplanta la lógica de la variable intermedia con su identificador: Necesitas el ID de origen y el ID de destino. No sirve biuscar el valor, porque el primer UPDATE destruirá esa referencia.
Entonces hay al menos una alternativa:
Código PHP:
Ver originalinclude_once('conexion.php');
$a = $_POST['na'];
$b = $_POST['nb'];
mysql_query("CREATE TABLE `ordenar_canales` ( id INT, n INT)"); mysql_query("INSERT INTO `ordenar_canales`(`id`, `n`) VALUES ('1','$a')"); mysql_query("INSERT INTO `ordenar_canales`(`id`, `n`) VALUES ('2','$b')");
$sql = mysql_query("SELECT id, `n` FROM `ordenar_canales`"); $cid = $row[0];
$cn = $row[1];
$bid = $row[0];
$bn = $row[1];
mysql_query("UPDATE `canales` SET `nOrden`='$bn' WHERE id='$cid'"); mysql_query("UPDATE `canales` SET `nOrden`='$cn' WHERE id='$bid'");
Lo importante es no confundir lo que PHP necesita hacer con lo que MySQL requiere obligatoriamente para lograrlo. Estás trabajando con dos ambientes con requisitos diferentes para un mismo fin.