请求每个页面加载唯一ID

时间:2012-08-22 01:47:17

标签: php sql

我正在创建一个页面,需要为每个页面加载选择唯一ID。它基本上是一个采购订单系统,但PO只是UID,因此重要的是没有用户可以获得相同的ID。我尝试只调用最后一个ID,然后添加1并提交,但如果两个或多个用户同时进入,则可能会产生冲突。为每个页面加载提取UID的最佳方法是什么?任何解决方案?

由于

劳埃德

4 个答案:

答案 0 :(得分:1)

您可以使用uniqid功能获取唯一键。如果需要整数,请运行hexdec

答案 1 :(得分:1)

答案 2 :(得分:1)

UniqId()是单向的,但结果很多。正如V Patel所说,还有“自动增量”,这可能是您想要的选项。

  1. 在MySQL中设置一个表(比如“PurchaseOrders”),其中包含一个字段“po_id”,并将其设置为主键和auto increment。添加另一个字段“po_status”(TinyInt * 1)和另一个“po_lastused”(日期* 1)。状态将为0 =草稿,1 =最终,2 =已发货等.LastUsed是用户最后一次访问详细信息。

  2. 如果要创建新的采购订单,请INSERT INTO PurchaseOrders(po_status,po_lastused)VALUES(0,NOW());注意:您尚未指定实际的采购订单

  3. 您可以通过询问“最后插入ID”来获取po_id(http://php.net/manual/en/mysqli.insert-id.php, http://php.net/manual/en/function.mysql-insert-id.php,{{3 },取决于您的编码库)

  4. 将po_id存储在会话变量中,以便在用户返回时知道他们的po_id(* 2)

  5. 每次用户访问采购订单时,如果“上次更新”超过5分钟前​​,请更新计时器。

  6. 定期删除所有草稿和上次更新时间超过会话的采购订单(例如,在一天之后)

  7. 这样,您最终会获得易于引用的不错的采购订单编号。

    * 1对于纯粹主义者,您还可以使用Enum作为状态,int作为日期 - 取决于您的偏好。您还可以设置自动更新的日期。但我保持简单。)

    * 2同样,对于纯粹主义者而言,您可以在此处实施更多安全措施,以确保“其他”用户无法访问其他人的采购订单,但这足以启动。

答案 3 :(得分:0)

使用正在使用的数据库的自动增量功能,特别是如果你喜欢它是一个数字而不需要它直到你想要坚持它。