• 締切済み

桁数の長くないユニークな値の取得

Apache2 + PHP5 + MySQLという環境でWebアプリを開発しています。 そこでPHPで生成したランダムでユニークな値をデータベースに格納したいのですが、 その際、値の桁数を10文字程度に制限したいのでmd5などを使うと桁数が長くなりすぎてしまい使うことができません。 ただランダムな文字列を格納しておき、もしデータベースに同じデータがあればもう一度やり直すことなども考えましたが、データが多くなると重複の確立が高くなってしまい、あまり気が進みません。 この場合どのようにすれば解決できるのでしょうか。よろしくお願いします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>PHPで生成したランダムでユニークな値をデータベースに格納したいのですが なんのためにランダムな数字が必要なのでしょうか? データがユニークかどうかはプライマリキーなどで制御することに なるので、ユニークな値は必要ありません。 例えばselect right(md5(now()),10)などとしてもよいですが 単にランダムな値がでるだけで、完全なユニークになる保証はありません。 >ランダムな文字列を格納しておき、もしデータベースに同じデータが >あればもう一度やり直すことなども考えましたが、 この作業はどんなことがあっても必要でしょうね。 入力側でどんなに精度の高いランダムをもちいても、すでに出力 されているかどうかを判定することはできません。 完全をめざすのであれば、最初にランダム表を作っておいて、 そこからデータを得ることです。

puripuriman
質問者

お礼

返答が遅くなってしまい申し訳ありません。回答ありがとうございます。 やはりユニークな値を格納するには毎回チェックするしかなさそうですね。 参考になりました。ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A