【问题标题】:Getting trouble in assigning id value in database in php [duplicate]在php中分配数据库中的id值时遇到麻烦[重复]
【发布时间】:2015-09-08 11:31:58
【问题描述】:

我正在使用php和mysql数据库制作一个简单的注册页面。

表格的id列是AUTO INCREAMENTED 注册过程运行良好,即将数据插入数据库。

目前我的表中有 3 条记录。 喜欢

  1. 拉格文德拉
  2. 苏兰德拉
  3. 莫希特

现在我的问题是:

当我删除第三条记录时,即

  1. 莫希特

我的数据库看起来像

  1. 拉格文德拉
  2. 苏兰德拉

现在,当我添加另一个记录时,我的表格看起来像

  1. 拉格文德拉
  2. 苏兰德拉

4.varun

想要的是什么样的

  1. 拉格文德拉
  2. 苏兰德拉
  3. 变量

对不起我的英语......帮帮我!

【问题讨论】:

  • 哦,伙计,另一个“我讨厌差距”的问题。第一个理性的答案得到我的投票
  • 如果你想实现类似的东西,就扔掉自动增量,并编写你自己的计数器,检查每个插入的 ID 的最大值是什么.. 但话说回来,使用的意义何在自增??
  • 主要 id 没有内在含义。它们保证的唯一性比让它们连续的任何强迫症理由都重要得多。事实上,一旦您开始将其他数据链接到这些 id,就非常重要的是永远不要重复使用 id
  • 为此,您应该使用手动增量并检查最大 ID。

标签: php mysql


【解决方案1】:

不要担心差距。要么您需要每个人的唯一编号,在这种情况下,重用 3 是个坏主意(它是指 Varun 还是 Mohit?),或者您只关心名称,您可以使用 CSS(有序列表)显示时在网页上对其进行编号。

保留将人员添加到数据库的顺序通常非常有用,而尝试“填补空白”可以防止这种情况发生。

另外,请记住,不能保证对于您删除的每个用户,留下一个空白,都会有一个新用户可以填补它。

【讨论】:

  • 我同意这一点。想象一下,如果您有 1000 个用户,而第 5 个用户被删除了。这是否意味着您现在需要在该位置插入下一个人,或者重新编号所有其他人后退到一个位置?
【解决方案2】:

严厉的答案是不要再关心id 是什么(它实际上只是一个内部唯一标识符,因此无需向用户显示)。

如果您要向用户显示列表,只需使用 <ol> 元素。

echo '<ol>';

while ($row = $results->fetch_row()) {
    echo '<li>' . $row->name . '</li>';
}

echo '</ol>';

这将呈现您所期望的结果,但您确实应该将id 视为内部事物,而不必担心它的实际值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2022-12-06
    • 2021-06-06
    相关资源
    最近更新 更多