0
我懷疑這個答案非常簡單,但無論出於何種原因,我對它有點困惑。在插入之前查詢主要數值時跳過主鍵號碼
我正在嘗試生成一個唯一的20個字符的字母數字散列值。我已經嘗試了多種方式通過PHP生成一個隨機值,但我仍然得到重複。我暫時嘗試了一個過程,在該過程中,在插入之前查詢表格,拉取最近的主鍵值,將其增加1,然後將其用作生成的哈希值的一部分。不幸的是,在主鍵的下面插入下面的代碼的結果由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("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 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,當我沒有在插入查詢中指定它的值時。
幫助將不勝感激。
它看起來像你的auto_increment偏移設置爲2,它是一個MySQL配置變量。沒有更多的信息,很難說它是否是其他的東西。 –
默認設置爲1。當我在插入前禁用代碼時,它會將主數據增加1. –
然後,它必定是一個查詢失敗,另一個成功。你如何用反引用你的專欄名稱? HASH是MySQL中的保留字。給我一個鏡頭,我們可以看到它是否繼續增加2或不。 –