-1
我寫了一段代碼來創建一個隨機字符串,該字符串對於MySQL表中的每一行都是唯一的。但我不確定它是否可以100%正常工作,並且確保始終獨一無二的public_key(假設所有選項都未完成)。PHP MYSQL中的唯一公共標識符
$id = mysql_insert_id();
$public_key = rand_string(8);
function insertPublicKey($key, $post) {
mysql_query("UPDATE posts SET public_key = '$key' WHERE id = '$post'");
}
function createPublicKey ($key, $post) {
$query = mysql_query("SELECT * FROM posts WHERE public_key = '$key'");
if(mysql_num_rows($query) == 0) {
insertPublicKey($key, $post);
} else {
$public_key = rand_string(8);
createPublicKey ($public_key, $post);
}
}
createPublicKey ($public_key, $id);
我想如果一些PHP技術人員可以看看代碼,並確認這總是會創建一個唯一的密鑰。
像每蘭特功能,你永遠無法確定如果考慮到每次 – chresse
返回不同的值,這個「完整」和你希望有人驗證它,你需要在http://codereview.stackexchange.com/上提問;這就是說,你正在使用一個不推薦使用的擴展(見http://www.php.net/manual/en/intro.mysql.php),這對於新代碼來說不是一個好主意。 –
在SQL的public_key列上簡單應用'UNIQUE'約束可能會更簡單 - 這樣,如果插入成功,您知道生成的代碼實際上是唯一的(如果失敗,您可以攔截它並生成另一個代碼) – Psychemaster