【问题标题】:Adding an integer to primary key auto-increment mysql php ajax将整数添加到主键自动增量mysql php ajax
【发布时间】:2019-02-08 15:27:29
【问题描述】:

我有一个通过 ajax 调用提交的表单,其中“id”列的主键设置为自动递增。

当我在没有说明 ID 的情况下发布时,它可以正常工作,并且项目以 1 的增量输入到表格中。

我想要做的是告诉我的查询下一个自动增量是什么......例如它现在是 5,我希望它在它当前所在的 5 上加上 10,所以它进入id 为 15。有人可以帮我处理语法,因为我似乎无法让它工作..再次发布,没有查询中说明的 id。

这是不工作的查询。顺便说一句,我已经知道弄乱主键不是一个好主意,但在这种情况下,它可以快速解决一个令人讨厌的问题,我将在它们备份并运行后解决这个问题。

$sql = "INSERT INTO Products
    (id, item, description, shelf, active) 
VALUES 
    ('".id."'+ 10, '".$item."', '".$description."', '".$shelf."', '".$active."')";

谢谢

【问题讨论】:

  • 如果你用自动增量“搞砸”了一些东西,你可以重置它们,如果这是你的问题...
  • 不要尝试插入 id 值,而是更改表定义中的自动增量值。
  • 您必须在插入之前检索 ID 的最大值。但是,您将无法知道另一个查询是否在您检索的值和插入语句之间增加了该值。为什么要在查询中这样做?
  • 这里是自动增量选项的一些基本信息dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html
  • 您可以使用ALTER TABLE 语句更改自动增量,请参阅stackoverflow.com/questions/970597/…。但是为什么要弄乱自动增量值/列呢?

标签: php mysql


【解决方案1】:

您可以尝试设置 auto_increment 索引,然后立即执行插入查询。 类似的东西:

// Pseudocode
$id = $sql("SELECT 'AUTO_INCREMENT' FROM  INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'yourDbName' AND TABLE_NAME='Products')");

$sql("ALTER TABLE Products AUTO_INCREMENT = ".($id + 15));

$sql = "INSERT INTO Products
(item, description, shelf, active) VALUES 
(".$item."', '".$description."', '".$shelf."', '".$active."')";

让mysql设置id并继续索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-20
    • 2011-06-19
    • 2011-02-22
    • 2011-04-26
    • 2010-12-09
    • 2012-12-14
    • 1970-01-01
    • 2010-10-11
    相关资源
    最近更新 更多