Увеличение и уменьшение значения строки на 1 в MySQL

Привет, у меня есть таблица базы данных MySQL «указывает», что пользователь может нажать кнопку, и точка должна быть удалена из своей учетной записи, кнопка, на которую они нажали, имеет идентификатор другого пользователя, поэтому их учетная запись должна увеличиваться на единицу.

Я работаю в jQuery и проверял varibles / posts в Firebug, и он отправляет правильные данные, такие как:

userid= 1 posterid = 4 

Я думаю, проблема связана с моей страницей 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; } } ?> 

Есть идеи? Благодаря 🙂

Два запроса на увеличение / уменьшение значения поля не требуются:

mysql_query ("UPDATE table SET field = поле + 1 WHERE id = $ number");

это абсолютно корректный запрос, как вы можете видеть дальше:

 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) 

Испытывая это, вы уверены, что попали в предложение if (loggedin()) ?

Я должен согласиться с KM , было бы неплохо увидеть вывод echo $query1; или echo $query2;

Вот пример запроса, проверенный мной, и он работает на 100%

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

попробуйте добавить что-нибудь, чтобы распечатать свою фактическую команду SQL, перед if ($result1 && result2) :

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

это поможет увидеть, что он отправляет в базу данных.

update table_name set col_name = col_name + 1 где sqId = 12

Но если ваше значение «col_name» по умолчанию равно null или пустое, оно никогда не работает, поэтому убедитесь, что значение по умолчанию col_name равно 0 или любое целочисленное значение.