電子書籍の厳選無料作品が豊富!

Apache2 + PHP5 + MySQLという環境でWebアプリを開発しています。

そこでPHPで生成したランダムでユニークな値をデータベースに格納したいのですが、
その際、値の桁数を10文字程度に制限したいのでmd5などを使うと桁数が長くなりすぎてしまい使うことができません。

ただランダムな文字列を格納しておき、もしデータベースに同じデータがあればもう一度やり直すことなども考えましたが、データが多くなると重複の確立が高くなってしまい、あまり気が進みません。

この場合どのようにすれば解決できるのでしょうか。よろしくお願いします。

A 回答 (1件)

>PHPで生成したランダムでユニークな値をデータベースに格納したいのですが



なんのためにランダムな数字が必要なのでしょうか?
データがユニークかどうかはプライマリキーなどで制御することに
なるので、ユニークな値は必要ありません。
例えばselect right(md5(now()),10)などとしてもよいですが
単にランダムな値がでるだけで、完全なユニークになる保証はありません。

>ランダムな文字列を格納しておき、もしデータベースに同じデータが
>あればもう一度やり直すことなども考えましたが、

この作業はどんなことがあっても必要でしょうね。
入力側でどんなに精度の高いランダムをもちいても、すでに出力
されているかどうかを判定することはできません。

完全をめざすのであれば、最初にランダム表を作っておいて、
そこからデータを得ることです。
    • good
    • 0
この回答へのお礼

返答が遅くなってしまい申し訳ありません。回答ありがとうございます。

やはりユニークな値を格納するには毎回チェックするしかなさそうですね。

参考になりました。ありがとうございました。

お礼日時:2007/09/22 22:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!