【发布时间】:2015-03-24 21:10:24
【问题描述】:
我有一个 MySQL 数据库,其中有一个名为 chapters 的表。
我有一个名为 chapter_number 的列,它是一个整数数据类型,并且不是自动递增的,因为我有另一个唯一标识行的字段。
在插入此表时,我希望 chapter_number 列的值是前一行的 chapter_number 增加 1 (+1)。
这样做的目的是确保每次添加章节时,都会发生正确的排序。
我如何在 PHP 中实现这一点?
这是我的意思的一个例子?
表结构:
$stmt = $db->prepare('INSERT INTO chapters VALUES (?,?,?,?)');
$stmt->execute(array('','title', '2015-04-03', 'chapter 1 body'));
我会为第一个参数输入什么 ^
【问题讨论】:
-
dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; UPDATE table SET c=c+1 WHERE a=1;基于您的“在插入到此表时” -
如果你删除了一行,那么在重置表之前,该行的id不能被重新使用?因此,如果删除第 2 行然后插入新行,则 id 的自动增量将在第 2 行存储 chapter_id =4。
-
“我已经找到了一种重新排序行的方法,如果由于这个原因删除了任何行” - 我不会发布我的第一个链接评论。 INSERT 和 UPDATE 完全是两种不同的动物。 ;-)
-
@Fred-ii- 不太清楚你的意思。如果我希望它是前一行的值 + 1,我正在努力弄清楚我实际上会在查询中为
chapter_number列输入什么值? -
好吧,我不确定您的编辑是否意味着您已经解决了问题。