假设我有一个链接到这样的数据库的表:http://www.falkencreative.com/forum/records/view.php
如何制作它以便在删除记录然后添加新记录时,新记录会替换先前删除的记录并具有先前删除的ID号而不是下一个ID?
例如
点击按钮删除绿色。
单击按钮添加新颜色。 输入橙色
就目前而言,我正在努力解决的问题是: 1.红色 蓝色 4.橙色(什么应该设置为3?)
就桌面设置而言,这可能是一件简单的事情,但我不知道该做什么,而且时间紧迫。任何人都可以指导我做我应该做的事情吗?
答案 0 :(得分:1)
您可以有2个选项。更新之前“绿色”值的同一行。即:
mysql_query("UPDATE table_name SET color = 'orange' WHERE ID = '3'");
或
mysql_query("UPDATE table_name SET color = 'orange' WHERE color = 'green'");
或
无论你的指定者是什么。
这应该是从MySql的角度来看最简单的方法。或者您可以按照最初的概述删除它,然后使用mysql_query重新插入新行(“INSERT INTO ....但是MySql PK UID需要重置,即:。
mysql_query("ALTER TABLE table_name AUTO_INCREMENT = 1");
将删除您使用的PK ID并重新编号所有行。或者是否有更简单的解决方案?
答案 1 :(得分:0)
我认为你想要更新记录,而不是删除旧记录并插入新记录。
修改强>
如果要插入新记录并为其分配下一个序列ID,请使用非auto_increment列并在添加新记录时执行此操作:
INSERT INTO myTable (id, ...) VALUES ( (SELECT MAX(id) + 1 FROM myTable), ...)
我没有数据库方便测试这个,但我认为它会起作用。但我不确定当桌子是空的时会发生什么。这也可能造成竞争条件。
答案 2 :(得分:0)
不,当您删除数据库行时,如果该列的AUTO_INCREMENT
处于活动状态,则它将从序列中获取值。
如果删除3,则序列始终从3 + 1开始。
您可以看到\设置自动增量值,例如从php myadmin。
我不知道你使用的是什么DBMS,但是使用oracle你可以操作序列。
所以你有各种各样的方式。
id
,IdToShow
,Value
。 id
与现在相同,你将它与autoinc一起使用。
idToShow
也是你展示的。当你插入时,你可以插入它来计算表中存在的行(你有各种方法)。
希望有所帮助。
答案 3 :(得分:0)
您的问题不是关于数据库ID,而是关于不了解ID和行号之间的区别。他们彼此无关。只需输出循环计数器(“$ i”)而不是ID。
<?php
for ($i = 1; $i <= foo(); $i++) {
print "<tr><td>{$i}</td><td>...</td></tr>\n";
}
?>