Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Servia en 28 Julio 2011, 17:46 pm



Título: [PHP+MYSQL] Sumar a una cifra mediante UPDATE, sin SELECT previo
Publicado por: Servia en 28 Julio 2011, 17:46 pm
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
  1. $num=-3;
  2.  
  3. $query='UPDATE members SET creditos=creditos+$num WHERE uid='$uid'';
  4. $result=mysql_query($query,$db);
  5.  

¿Por qué?


He probado a poner paréntesis, pero como si no estubieran.
Código
  1. $query='UPDATE members SET creditos=creditos+($num) WHERE uid='$uid'';
  2. $result=mysql_query($query,$db);


Título: Re: [PHP+MYSQL] Sumar a una cifra mediante UPDATE, sin SELECT previo
Publicado por: Shell Root en 28 Julio 2011, 18:21 pm
Pues a mi me funciona correctamente mirad,
Ingreso el valor en la tabla,
Código
  1. mysql> INSERT INTO PoC VALUES(1);
  2. Query OK, 1 ROW affected (0.00 sec)
Modifico el valor y le sumo -2,
Código
  1. mysql> UPDATE PoC SET PoCField = PoCField + (-4);
  2. Query OK, 1 ROW affected (0.00 sec)
  3. ROWS matched: 1  Changed: 1  Warnings: 0
  4.  
El resultado inicial y final es,
Código
  1. mysql> SELECT * FROM PoC;
  2. +----------+----------+
  3. | PoCField | PoCField |
  4. +----------+----------+
  5. |       1  |     -3   |
  6. +----------+----------+
  7.  

Nota, intetadlo haciendolo así, ya que tienes un escape de comillas simples,
Código
  1. $sql = "UPDATE members SET creditos=creditos+$num WHERE uid='$uid'";


Título: Re: [PHP+MYSQL] Sumar a una cifra mediante UPDATE, sin SELECT previo
Publicado por: Servia en 28 Julio 2011, 18:44 pm
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?


Título: Re: [PHP+MYSQL] Sumar a una cifra mediante UPDATE, sin SELECT previo
Publicado por: Shell Root en 29 Julio 2011, 00:53 am
Porque mejor no printeas la consulta antes de ejecutarla, la analizas y luego la ejecutas en el motor de base de datos.