Привет, у меня есть таблица базы данных 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 или любое целочисленное значение.