【问题标题】:How to generate auto number with unique values如何生成具有唯一值的自动编号
【发布时间】:2014-05-14 05:49:29
【问题描述】:

大家好,我有一张带有 两个主键的表,其中一个是 ID,它正在使用它的

AUTO_NUMBER 的值从 10000 开始,然后继续。

第二个字段是ImageID,主键+唯一索引表示不能接受重复

但是对于这个,我使用 HTML 的隐藏字段,但在值上我使用 rand() 函数。

这里的问题是它生成重复的数字,我需要唯一的值导致图像

字段不接受重复。

我应该使用哪个函数来生成唯一的数字。

这是隐藏的域代码:

<input type="hidden" name="ImageID" id="ImageID" value="<?php echo rand(1000,9999999999); ?>" />

【问题讨论】:

  • ImageID 需要是整数吗?
  • IDImageID 有什么区别?是多余的吗?
  • 是的,它必须是整数,但从何时何地开始以及多少并不重要,但必须是唯一的
  • @Wesley Murch:ID 是表的 ID,ImageID 是我可以从 Image 表中检索图像的 ID。
  • 你已经有ID,保证唯一,ImageID有什么意义?只是为了隐藏真实的ID?还是别的什么?

标签: php


【解决方案1】:

当前的 unix 时间戳总是唯一的。您还可以在微秒内获得它,以获得更高的精度。

microtime()

为防止在完全相同的微秒内添加条目造成任何可能的冲突(似乎不太可能),您可以向其附加一个随机数。

【讨论】:

    【解决方案2】:

    您可以使用 uniqid() 。 uniqid() 函数根据微时间(当前时间,以微秒为单位)生成唯一 ID。或者你也使用 time()。

    【讨论】:

    • 我可以像 rand() 函数一样为它指定数字吗
    • 不,您不能指定像 rand 这样的数字。但是您可以创建一个函数并连接其他一些值以使其更大或更独特。
    • 它已经有 13 个字符了,不需要让它变大怎么办,因为我不想让我的桌子变重
    • 所以你可以使用 time 函数它返回当前的 unix 时间戳。
    【解决方案3】:

    你也可以试试这个:

    <?php
    $imageId = range(1000, 10000);
    shuffle($imageId);
    ?>
    
    <!-- you can use loop -->
    <input type="hidden" name="ImageID" id="ImageID" value="<?php echo $imageId[0]; ?>" />
    <input type="hidden" name="ImageID" id="ImageID" value="<?php echo $imageId[1]; ?>" />
    <input type="hidden" name="ImageID" id="ImageID" value="<?php echo $imageId[2]; ?>" />
    <input type="hidden" name="ImageID" id="ImageID" value="<?php echo $imageId[3]; ?>" />
    

    【讨论】:

    【解决方案4】:
    <input type="hidden" name="ImageID" id="ImageID" value="<?php echo time(); ?>" />
    <input type="hidden" name="ImageID" id="ImageID" value="<?php echo time(); ?>" />
    <input type="hidden" name="ImageID" id="ImageID" value="<?php echo time(); ?>" />
    <input type="hidden" name="ImageID" id="ImageID" value="<?php echo time(); ?>" />
    

    【讨论】:

    • Arayan:亲爱的,页面引用时值没有改变。
    • 你需要什么。
    • 通过引用页面值必须改变
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 2017-03-27
    相关资源
    最近更新 更多