0

私はインターネット上で人々が写真を投稿し、短い文字列を生成するサービスを持っています。これまでに使用できるのは1つだけです。ただし、データベースで重複が発生し、大きな問題が発生しています。

これが私が使用しているものです:

$id=rand(10000,99999);
$short_string = base_convert($id,20,36);

それを修正するための最良の方法は何でしょうか?データベースからチェックして、一致しなくなるまでループを続けますか?考えられるすべての解決策が無限ループに陥った場合はどうなりますか?

4

5 に答える 5

1

PKを、そこから一意の番号を生成するアルゴリズムに通し、それを関数に通します。

于 2011-05-21T01:41:52.360 に答える
1

最善の策は、乱数ジェネレーターを使用して画像のリストに対して画像が存在しないことを確認してから、その番号を含む新しい画像を書き込むことです。

数字や文字を使用するアルゴリズムを使用して文字の量と種類を増やして、組み合わせを増やすようにしてください。

于 2011-05-21T01:46:10.800 に答える
1

ランダムな値を使用する代わりに、最後の値をランダムな量だけインクリメントします。そのようです:

$results = mysql_query("SELECT * FROM thetable ORDER BY theId DESC LIMIT 1");
$keyToUse = 1;
if($row = mysql_fetch_array($results)) {
    $keyToUse = (int)$row['theId'] + rand(1, 100);
}

次に、整数キーを任意の形式との間で変換します。たとえば、を使用しbase_convertます。

于 2011-05-21T02:05:39.877 に答える
1

mt_rand() http://www.php.net/manual/en/function.mt-rand.phpを使用してみましたか。また、範囲を広げる必要があります。

于 2011-05-21T02:14:09.143 に答える
0

md5を使用しますhttp://php.net/manual/en/function.md5.php 生成された文字列には競合がありません(確率が高い)。

于 2011-05-21T01:40:31.230 に答える