[PHP+MYSQL] Sumar a una cifra mediante UPDATE, sin SELECT previo

Iniciado por Servia, 28 Julio 2011, 17:46 PM

0 Miembros y 1 Visitante están viendo este tema.

Servia

Buenas.

Tengo un script que recibe un número en una variable y este puede ser tanto positivo como negativo. El problema que tengo es al aplicarlo en una row de la db pues si resulta que tiene que restar 3, suma 2 :S
Código (php-brief) [Seleccionar]

$num=-3;

$query='UPDATE members SET creditos=creditos+$num WHERE uid='$uid'';
$result=mysql_query($query,$db);


¿Por qué?


He probado a poner paréntesis, pero como si no estubieran.
Código (php-brief) [Seleccionar]

$query='UPDATE members SET creditos=creditos+($num) WHERE uid='$uid'';
$result=mysql_query($query,$db);

Shell Root

Pues a mi me funciona correctamente mirad,
Ingreso el valor en la tabla,
Código (sql) [Seleccionar]
mysql> INSERT INTO PoC VALUES(1);
Query OK, 1 row affected (0.00 sec)

Modifico el valor y le sumo -2,
Código (sql) [Seleccionar]
mysql> UPDATE PoC SET PoCField = PoCField + (-4);
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

El resultado inicial y final es,
Código (sql) [Seleccionar]
mysql> SELECT * FROM PoC;
+----------+----------+
| PoCField | PoCField |
+----------+----------+
|       1  |     -3   |
+----------+----------+


Nota, intetadlo haciendolo así, ya que tienes un escape de comillas simples,
Código (php) [Seleccionar]
$sql = "UPDATE members SET creditos=creditos+$num WHERE uid='$uid'";
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Servia

Gracias por contestar.
Lo de las comillas simples ha sido porque las he puesto ahora en el uid corriendo xD

Pues no hay manera :S
No habrá alguna diferencia entre mysql en cmd y desde php?

Shell Root

Porque mejor no printeas la consulta antes de ejecutarla, la analizas y luego la ejecutas en el motor de base de datos.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.