こんにちは、ID と UID を処理するシステムを作成しています。UID はランダムに生成していますが、少し行き詰まっています。フィールドは使用される一意のフィールドであるため、現在データベースに存在しない UID を常に生成する必要があります。実際の ID を公開しないように、フロント エンドで。
要約すると、現在 DB に存在しない一意の ID を生成しようとしています。作業していない部分は、db のクロスチェックであるため、db に既に存在する番号が表示されることがあります。事前に感謝すべきではありません。
これまでの私のコードは次のとおりです。
function uniqueID($table)
{
$db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$possible = '1234567890';
$code = '';
$characters = mt_rand(7,14);
$i = 0;
while($i < $characters)
{
$code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
$i++;
}
$result = $db->query('
SELECT uniqueID
FROM '.$table.'
WHERE uniqueID = "'.$code.'"
LIMIT 1
');
$totalRows = $result->num_rows;
if(!$result)
{
return $db->error;
}
else
{
if($totalRows > 0)
{
return uniqueID($table);
}
else
{
return $code;
}
}
}