2010-05-14 7 views
29

Hola tengo una tabla de base de datos MySQL "puntos" el usuario puede hacer clic en un botón y un punto debe eliminarse de su cuenta, el botón que presionó tiene una ID de otro usuario, por lo tanto su cuenta debe aumentar en uno.Aumentar y disminuir el valor de fila en 1 en MySQL

que tienen que trabajar en jQuery y se verificaron las varibles/mensajes en Firebug, y lo hace enviar los datos correctos, tales como:

userid= 1 
posterid = 4 

Creo que el problema es con mi página PHP:

<?php 


include ('../functions.php'); 

$userid=mysql_real_escape_string($_POST['user_id']); 
$posterid=mysql_real_escape_string($_POST['poster_id']); 

if (loggedin()) 
{ 
include ('../connection.php'); 
$query1 = "UPDATE `points` SET `points` = `points` - 1 WHERE `userID` = '$userid'"; 
$result1=mysql_query($query1); 


$query2 = "UPDATE `points` SET `points` = `points` + 1 WHERE `userID` = '$posterid'"; 
$result2=mysql_query($query2); 


if ($result1 && result2) 
{ 
    echo "Successful"; 
    return 1; 
} 
else 
{ 

    echo mysql_error(); 
    return 0; 
} 
} 
?> 

¿Alguna idea? Gracias :)

+0

se olvidó de mencionar el problema en sí –

+0

oh lo siento, bueno, no aumenta o disminuye la fila ... Los probé en mysql y funcionan bien. – Elliott

+0

mysql_error() puede ayudar a encontrar el problema –

Respuesta

56

dos consultas para aumentar/disminuir el valor del campo no es necesario:

mysql_query ("ACTUALIZACIÓN tabla SET campo = campo + 1 DONDE id = $ número");

es una consulta perfectamente válido como se puede ver a continuación:

mysql> describe points; 
+--------+---------+------+-----+---------+-------+ 
| Field | Type | Null | Key | Default | Extra | 
+--------+---------+------+-----+---------+-------+ 
| uid | int(11) | NO | PRI | NULL |  | 
| points | int(11) | YES |  | 0  |  | 
+--------+---------+------+-----+---------+-------+ 
2 rows in set (0.05 sec) 

mysql> insert into points VALUES (1,0),(2,0); 
Query OK, 2 rows affected (0.14 sec) 

mysql> select * from points; 
+-----+--------+ 
| uid | points | 
+-----+--------+ 
| 1 |  0 | 
| 2 |  0 | 
+-----+--------+ 
2 rows in set (0.05 sec) 

mysql> update points set points = points+1 where uid = 1; 
Query OK, 1 row affected (0.27 sec) 
Rows matched: 1 Changed: 1 Warnings: 0 

mysql> select * from points; 
+-----+--------+ 
| uid | points | 
+-----+--------+ 
| 1 |  1 | 
| 2 |  0 | 
+-----+--------+ 
2 rows in set (0.00 sec) 

que tienen que ensayar, ¿está seguro de que usted entra en su cláusula if (loggedin())?

Estoy de acuerdo con KM, sería bueno para ver la salida de echo $query1; o echo $query2;

+0

UPDATE xyz, 'SET Column = Column + n WHERE ...' es un SQL muy estándar, apuesto a que, por alguna razón, la cadena OPs sql no está siendo construida de la manera que quieren, de ahí las recomendaciones para mostrar $ query1 y $ query2. Apuesto a que el problema se vuelve obvio después de ver sus contenidos. –

+0

Hola, gracias, el eco de cada consulta es el mismo que la consulta que escribí anteriormente. – Elliott

+0

Lo arreglé, simplemente lo reescribí de nuevo y pareció funcionar jaja gracias – Elliott

2

intento de añadir en algo para imprimir su comando real de SQL, antes de la if ($result1 && result2):

ECHO '$query1='.$query1.'<br>'; 
ECHO '$query2='.$query2.'<br>'; 

esto ayudará a ver de qué se está enviando a la base de datos

4

Ésta es la consulta ejemplo, probado por mí y que está dando el 100% conjunto nombre_tabla

$query="UPDATE table_name SET `hit_count`=(`hit_count`+1) WHERE `id` = '1'"; 
+4

Bienvenido a stackoverflow. Por favor, asegúrese de leer las respuestas anteriores antes de publicarlas. Como eso es esencialmente lo mismo que la respuesta aceptada.Lo mejor es no molestar a los hilos antiguos a menos que la respuesta agregue algo significativo que falta en las respuestas anteriores. – Leigh

+0

Gracias @Raj Kumar das –

1

actualización col_name = col_name + 1 donde sqId = 12

Pero si su "col_name" Por defecto el valor es nulo o está vacío, nunca funciona, así que asegúrese de que col_name el valor predeterminado es 0 o cualquier valor entero.

Cuestiones relacionadas