【问题标题】:How to replace some values if a user already exists?如果用户已经存在,如何替换一些值?
【发布时间】:2019-06-17 23:54:39
【问题描述】:

如果“用户”已经存在,我不知道如何替换一些数据。

我已经尝试过ON DUPLICATE KEY UPDATE,但我意识到这可能行不通。因为在我的代码中唯一没有更新的值是“用户”,但其他 3 个值每 5 分钟不断更新。

INSERT INTO online ( `user`, `bot`, `world`, `status` ) VALUES ('$User', '$Name', '$World', '$status')
ON DUPLICATE KEY UPDATE bot = VALUES ('$Name'), world = VALUES ('$World'), status = VALUES ('$status')

这个想法是,例如,如果用户“bob”已经存在,则更新他的其他 3 个值botworldstatus,而不是创建新行等等。

编辑:这就是我在Mysql 中设置的方式

【问题讨论】:

  • 如果主键是user,这将按你的意愿工作。另外,只要看看你的代码,你可能想熟悉一下SQL injection
  • @Bohemian 是的,我已经用主键搜索过,但作为一个文本,我似乎无法将其设为主要嗯编辑:只是注意到我可以将其更改为 varchar,然后将其设为初级
  • 使用VARCHAR(30) 或一些合理的长度而不是文本。

标签: php mysql mysqli


【解决方案1】:

VALUES() 的参数应该是列名,而不是字符串。您输入要插入的列的名称。

INSERT INTO online ( `user`, `bot`, `world`, `status` ) VALUES ('$User', '$Name', '$World', '$status')
ON DUPLICATE KEY UPDATE bot = VALUES (bot), world = VALUES (world), status = VALUES (status)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 2011-07-15
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多