我試圖在我的網站中創建每個頁面的唯一URL編號,以便輕鬆地將其包含到網站地圖中。我的網址是這樣的:site.com/book/11111111
,site.com/book/11111112
創建一個唯一的8位數字並將其插入到數據庫中而不會出現重複
我想爲每個ID插入一個唯一的URL,但堅持一個小問題。我使用下面的代碼,但並不保證每次我的thing_url
的唯一性。我可以用if-else語句來檢查它的唯一性,但即使我第二次檢查它,我的字符串也可能是第二次也可能不是唯一的。我不想有很多變量和if-else語句使用$thing_url
,$thing_url2
,$thing_url3
等。
有沒有一種方法可以使用單個循環檢查唯一性,直到它成功?這是我現在所做的。
$thing_name = $_POST['thing_name']; // form value
$thing_url = mt_rand(10000000, 99999999); // generates 8 digit numeric string
$query = "SELECT thing_url FROM thing WHERE thing_url = '$thing_url'";
$result = $sqli->query($query);
$row = $result->fetch_assoc();
$finish = $row['thing_url'];
if($finish == $thing_url) {
echo "Bad luck";
} else {
$thing = $sqli->prepare("INSERT INTO thing(thing_url, thing_name) VALUES (?,?)"); // prepare
$thing->bind_param("ss", $thing_url, $thing_name); // bind
$thing->execute(); // execute
$thing->close(); // close
}
使用autoincrement id。以下是更多信息http://www.w3schools.com/sql/sql_autoincrement.asp –
我已經爲每條記錄使用了auto_incremented ID,並且它們是唯一的,但我想將這些thing_url用作唯一的URL。 auto_increment ID值很容易猜到,我不希望我的網站內容能夠被輕鬆抓取。 – salep
從1000000到999999爬行ID更困難? –