Php 在MySQL中将行值增加或减少1

Php 在MySQL中将行值增加或减少1,php,sql,mysql,Php,Sql,Mysql,嗨,我有一个MySQL数据库表“点”用户可以点击一个按钮,一个点应该从他们的帐户中删除,他们按下的按钮有另一个用户的ID,因此他们的帐户必须增加一个 我让它在jQuery中工作,并在Firebug中检查了变量/帖子,它确实发送了正确的数据,例如: userid= 1 posterid = 4 我认为问题在于我的PHP页面: <?php include ('../functions.php'); $userid=mysql_real_escape_string($_POST['us

嗨,我有一个MySQL数据库表“点”用户可以点击一个按钮,一个点应该从他们的帐户中删除,他们按下的按钮有另一个用户的ID,因此他们的帐户必须增加一个

我让它在jQuery中工作,并在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 = 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'";
但是,如果默认情况下,
col\u name
的值为null或空,则它将不起作用,因此请确保
col\u name
的默认值为
0
或任何整数值

update 'tablename' set 'columnname1'='columnname1' + 1 where 'columnname2'='value';
例如:
updatestudents set englishmarks=englishmarks+1,其中name='Rahul'

编辑:(解释) “UPDATE”关键字用于更新表中的变量。这里我正在更新表“students”中的一个值。“SET”关键字将英文标记更新1(就像在C语言中,我们如何增加整数的值,i=i+1),并在名称为“Rahul”的地方给出条件


因此,在拉拉威尔语迁移中,拉胡尔语的英语标记增加1

\DB::statement('SELECT @pos:=0;');
\DB::statement('UPDATE users SET company_id = ( SELECT @pos := @pos + 1 ) WHERE `id` = '1';');
如果要更改所有记录,请删除WHERE
id
=“1”

它将在您的记录中插入数字增量,如:

+-----+------------+
|  id | company_id |
+-----+------------+
|   1 |      1     |
|  12 |      2     |
|  23 |      3     |
+-----+------------+

你忘了提及问题本身哦,是的,对不起,它不会增加或减少行数…我在mysql中测试了它们,它们工作正常。mysql\u error()可能有助于找到问题问:你得到了什么结果?“Successful”/1?@Elliot如果是AJAX调用,您怎么能看到错误?更新xyz,
SET Column=Column+n其中…
是非常标准的SQL,我敢打赌,由于某种原因,OPs SQL字符串的构造方式不是他们想要的,因此建议显示$query1和$query2。我敢打赌,在看到它们的内容后,问题会变得很明显。嗨,谢谢,每个查询的回音都与我上面写的查询相同。修复了它,只是重新写了一遍,似乎很有效。哈哈,感谢对我来说很有效,除了递减时,无法使值达到0(它停止在1,进一步递减没有效果)。该字段是未定义为“NOT null”的INT。有什么建议吗?欢迎来到stackoverflow。请务必在发布前阅读之前的答案。因为这与公认的答案基本相同。最好不要打扰古老的线索,除非回复中添加了之前答案中缺失的重要内容。谢谢@Raj Kumar das
+-----+------------+
|  id | company_id |
+-----+------------+
|   1 |      1     |
|  12 |      2     |
|  23 |      3     |
+-----+------------+