在同一张数据表中多次使用SQL自增值

4
我为一位朋友设计网站内置管理员面板,有一个基本的HTML输入表单。他希望通过PHP将数据发布到数据库,并在主页上重新显示出来。每个条目都在数据库中有自己的列(id,name,ep_num等)。id是自动递增的,name是从$_POST ['name']获取的,但对于ep_num,我希望按名称分配自动递增。例如,他发布了“Hello”一次,它被赋予“1”的ep_num。他再次输入“Hello”,它会被赋予“2”的ep_num。我认为mysql_insert_id()可能是我要找的内容,但我今天工作时间很长,脑子不太好使,希望你们中的一个可以帮我。谢谢。

将$_POST ['name']插入thetable(name,ep_num),选择count(*)+1 from thetable where name = $ _POST ['name'] - splash58
哇,回复太多了。我会先尝试这一个。 - Filthy_Rich
2个回答

3
insert into t (name, ep_num) select 'b', count(*)+1 from t where name='b'; 

SQLFiddle演示


这正是我想要的。我将尝试使用您的格式再次进行,第一次我运气不佳,但我可能做了一些愚蠢的事情。 - Filthy_Rich
好的,这基本上是可行的,但会进行双重数据输入。ep_nums按顺序输入,例如1、2、3、4,但输入了两个包含1和2 ep_num的条目。以防万一,我将在我的问题中发布我的代码。 - Filthy_Rich
问题已解决。这是因为我的 SQL 语句中有 if 语句导致了重复输入。感谢你的帮助,伙计。 - Filthy_Rich

0
INSERT INTO table (name,ep_num) VALUES ("hello",1)
ON DUPLICATE KEY UPDATE ep_num=ep_num+1;

如果您要将列名更改为主键,则需要将该语句用于具有唯一索引或主键,并将id设置为自动递增值。如需了解更多信息,请参阅重复键更新


这个建议只是在两次添加名称时都使用了ep_num为1,当我添加另一个条目时也是如此,保持了相同的ep_num为“1”。 - Filthy_Rich
你需要确保“name”列是主键或唯一的,如果你将“name”声明为主键,则需要确保“id”不是主键,这样可以在其上设置自动增量。 - Amit.S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接