捕获自动增量值并将其与查询一起存储

时间:2012-05-15 15:07:02

标签: php mysql

我有一个自动递增的消息表,我只想捕获自动增量ID号并将其与随机生成的代码一起存储。然后我会使用此代码吐出整个页面。例如,假设用户刚刚更新了新消息,并且自动增量消息ID为429.我希望能够存储429并在末尾添加5位数代码,以便消息获得429 ID自动但在其列中也有一个标识符,代码为429mUwIz。

然后我会有一个公共页面,它会接受该代码并显示特定的消息。因此,如果您要访问www.example.com/429mUwIz,它会显示输入的消息。我显然需要5个随机发生器,因此用户无法直接访问www.example.com/1,www.example.com/2并滥用该系统。

那么提出这样一个代码的最佳方法是什么,我知道mysql_insert_id不会工作,因为我需要使用insert存储的ID。

附件是Path如何创建这样一个系统的一个例子。如果有帮助,他们的信件也会区分大小写。

https://path.com/p/2BTxys

感谢。

编辑:这也是创建这个随机5键代码的最佳方法。遗憾。

2 个答案:

答案 0 :(得分:2)

您可以查询它

$r = mysql_query("SHOW TABLE STATUS LIKE 'table_name' ");
$row = mysql_fetch_array($r);
$Auto_increment = $row['Auto_increment'];

这将检索下一个自动增量ID ... docs for SHOW TABLE STATUS here

使用

生成5个字符的随机字符串
$rand = substr(md5(microtime()),rand(0,26),5);

使用microtime()md5生成一个哈希,然后抓取一个随机的5个字符.....它不需要是唯一的,因为你正在使用自动增量ID。 ..

答案 1 :(得分:0)

你可以避免这种情况,我的意思是,你不必在随机代码中存储AUTO_INCREMENT id。将随机代码单独存储在自己的列中,然后在用户询问页面时检查它。如果ID和随机代码之间不匹配,请不要显示该页面。

目前,我可以假设您正在使用以下方式查询路径:

SELECT * FROM Paths WHERE key = '429mUwIz'

但这完全等同于:

SELECT * FROM Paths WHERE id = '429' AND key = 'mUwIz'

您只需要从URL中分割ID和KEY。您可以将所有数字视为ID部分,将所有字母视为KEY部分。