[mysql] Inkrementacja wartości pola o jeden

D.F.

Były Moderator
Dołączył
Listopad 4, 2009
Posty
493
Witam,
Piszę ten temat, bo mam problem z poprawnym zapisaniem zapytania mysql, które zwiększy wartość pola o jeden.

Moje zapytanie wygląda tak:
Kod:
mysql_query("UPDATE ".PREFIX."'$p' SET `count` = `count`+1 WHERE `id` = '$id' ");
gdzie PREFIX to po prostu prefix tabeli, a zmienna $p zawiera dalszą nazwę tabeli po prefiksie. Pole count zawiera wartość, którą chcę zwiększyć, po WHERE jest warunek, aby zwiększyło tylko dla wpisu z podanym ID.

Czy może muszę najpierw pobrać tą wartość do zmiennej, zwiększyć i dopiero wstawić? Mógłby ktoś mi pomóc to poprawnie zapisać?

Pozdrawiam.
 

RobertG

Użytkownik
Dołączył
Styczeń 3, 2007
Posty
391
Zapytanie jest OK (przykład poniżej), może masz coś nie tak z jego zapisem? Co mówi komunikat błędu? Spróbuj wywalić zmienne z zapytania i wlepić na ich miejsce jakieś wartości na sztywno, może tu tkwi błąd.

Kod:
mysql> select * from foo;
+------+-------+
| id   | count |
+------+-------+
|    1 |     3 | 
|    2 |     1 | 
|    3 |     1 | 
+------+-------+
3 rows in set (0.00 sec)

mysql> update foo set count = count+1 where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update foo set count = count+1 where id=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from foo;
+------+-------+
| id   | count |
+------+-------+
|    1 |     4 | 
|    2 |     2 | 
|    3 |     1 | 
+------+-------+
3 rows in set (0.00 sec)
 
Ostatnia edycja:

D.F.

Były Moderator
Dołączył
Listopad 4, 2009
Posty
493
Dzięki za odpowiedź. Miałeś racje... Wartość zmiennej $p była inna niż miała być...
 
Do góry Bottom