更新mysql列字段中的数据而不删除以前的值

时间:2016-05-01 08:23:50

标签: php mysql

我正在尝试更新" new"具有新值的列值,但问题是我的查询在插入新值时删除以前的数据

想要什么:这是示例表结构,

表名= agg_lvl主键集= uid

uid     | new
--------|--------
1       | 100
2       | 300

你可以看到" new"有100分,例如我向用户1发送100个新点,所以新列值应为100 + 100 = 200,现在使用此代码

$query4 = mysql_query("INSERT INTO agg_lvl (uid, new) VALUES ('$uid','$new')
ON DUPLICATE KEY UPDATE uid='$uid',new='$new'");

不确定是什么

new = '$new'

我尝试了两种方式,但没有成功=>

new = 'new + $new' or new = new + '$new'

3 个答案:

答案 0 :(得分:2)

您应该在查询中进行更改

  1. num = nun+$num为旧版添加新值
  2. 删除引号a newnt $ new,因为它是一个数字但不是字符串
  3. 从集合列表中删除uid,因为insert已指向该记录
  4. 您的查询应如此:

    $query4 = mysql_query("INSERT INTO agg_lvl (uid, new) VALUES ('$uid','$new')
    ON DUPLICATE KEY UPDATE new=new+$new");
    

答案 1 :(得分:0)

好的,首先我将以正确的方式回答,在这种情况下,我假设UID是唯一的,因此您使用UID作为外键创建一个新表scorecard。现在而不是更新,你只需要向表中插入内容,就像UID 1获得10点和20点一样,有两个条目。 onw with 10 and one with 20.现在要获得他当前的积分,你可以添加UID = 1的所有积分。

现在,在您的实现中,正确的查询将是

UPDATE userData SET points = points + x WHERE UID = $uid

其中x是获得的新点,points是列的名称

答案 2 :(得分:0)

$ query4 = mysql_query(" INSERT INTO agg_lvl(uid,new)VALUES(' $ uid',' $ new') ON DUPLICATE KEY UPDATE uid =' $ uid',new = new + $ new");

在@ splash58

的帮助下为我工作