我怀疑这个问题的答案很简单,但无论出于何种原因,我对此感到有些困惑。
我正在尝试生成一个唯一的 20 字符字母数字哈希值。我尝试了多种方法通过 PHP 生成随机值,但我仍然得到重复。我暂时尝试了一个过程,在该过程中我在插入之前查询表,提取最新的主键值,将其加一,然后将其用作生成的哈希值的一部分。不幸的是,下面的代码导致主键的以下插入增加了 2 而不是 1(即 13、15、17、19 等)
这是我的代码:
$dbTableNumQuery = $dbh->prepare("SELECT ROW_ID FROM table ORDER BY ROW_ID DESC LIMIT 1");
$dbTableNumQuery->execute();
$dbTableNumRow = $dbTableNumQuery->fetch();
$lastID = $dbTableNumRow['ROW_ID'];
$lastID = intval($lastID);
$lastID = $lastID + 1;
$hash = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 20);
$hash = $lastID . $hash;
$hash = substr($hash, 0, 20);
$query = $dbh->prepare("INSERT INTO secondarytable (HASH) VALUES (:hash)");
$query->bindParam(':hash', $hash, PDO::PARAM_STR);
$status = $query->execute();
最让我困惑的是,当我没有在插入查询中指定它的值时,我不明白为什么主键的值增加了 2。
帮助将不胜感激。