我有下面的代碼,應該會檢測重複的id代,並不會執行。這段代碼是否足夠防止重複ID?此代碼是防止重複ID的正確方法嗎?
//$guid and $alphabet are other sources from which id is generated
$unique = false;
while($unique == false){
$Guid = NewGuid();
ob_start();
echo base_encode($Guid, $alphabet);
$newid = ob_get_contents();
ob_get_clean();
$query = "SELECT * FROM posts WHERE id='$newid'";
$res = mysql_query($query) or die(mysql_error());
if(mysql_num_rows($res) == 0)
$unique = true;
}
不,它很活潑。 NewGuid()是什麼?如果你生成一個全球唯一的標識符,那麼非唯一標識符的機會非常小。 – knittl 2012-04-17 18:15:57
爲什麼它回到輸出緩衝區並回讀到'$ newid'!? – Hamish 2012-04-17 18:18:05
你正從錯誤的角度接近問題。如果將主鍵設置爲自動增量,數據庫可以爲您生成一個ID,爲什麼不這樣做? – GordonM 2012-04-17 18:19:20