【问题标题】:Update or Insert, Auto increment int in sql更新或插入,在 sql 中自动递增 int
【发布时间】:2016-08-17 16:24:04
【问题描述】:

我正在尝试自动递增(更新)或在我的 MySQL 数据库中插入数据,因此每次请求 PHP 文件时,它都应该更新 Uses插入 DeviceID 和 Uses,这段代码可以正常工作,但我怎么能做到它每次递增使用?希望你能理解我的问题。

$sql = "INSERT INTO user (`deviceid`, `uses`) VALUES ('$DeviceID', $Uses)
ON DUPLICATE KEY UPDATE `uses` = '$Uses'"; 

【问题讨论】:

  • $uses++ 或 $uses + 1
  • @doug 这在 SQL 中不起作用。
  • 我希望这里的所有值都是properly escaped

标签: php mysql sql increment


【解决方案1】:

您想让 MySQL 管理对字段的更改,如下所示:

$sql = "INSERT INTO user (`deviceid`, `uses`) VALUES ('$DeviceID', 1)
ON DUPLICATE KEY UPDATE `uses` = `uses` + 1"; 

注意:我从声明中删除了$Uses,这没有任何意义。如果你是第一次插入,它应该是 1。如果它存在,它将由 MySQL 设置。

【讨论】:

  • 我不得不将'uses + 1'中的引号从'更改为',但我认为我的编辑被拒绝,否则我会收到此错误:'field'中的未知列'uses+1'列表'
  • 应该是:`uses` = `uses` + 1
  • 谢谢,现在可以了,但是有没有办法避免表ID(而不是DeviceID)是这样的? 1、13、20、33。所以每次我更新一些东西时,它都会增加 auto_increment id
  • 我认为防止你的 id 增加的唯一方法是将检查逻辑移动到你的应用程序中,即首先SELECT deviceid ..,然后检查结果然后INSERTUPDATE 视情况而定。 (并删除ON DUPLICATE KEY 部分)
猜你喜欢
  • 2013-04-12
  • 2012-02-02
  • 2015-07-09
  • 2015-12-31
  • 1970-01-01
  • 2018-12-14
  • 2016-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多