sql >> データベース >  >> RDS >> Mysql

8つのランダムな文字の一意の文字列を挿入します

    これにより、ランダムな8文字の文字列が得られます:

    substr(str_pad(dechex(mt_rand()), 8, '0', STR_PAD_LEFT), -8);
    

    ここにあります: http://www.richardlord.net/blog/php-password-セキュリティ

    または、ユーザー名フィールドが一意の場合は、次を使用することもできます:

    substr(md5('username value'), 0, 8);
    

    特にmd5の場合は非常にまれですが、どちらの場合も一意の文字列が保証されないため、おそらく次のようにします。

    // Handle user registration or whatever...
    
    function generatePID($sUsername) {
        return substr(md5($sUsername), 0, 8);
    }
    
    $bUnique = false;
    $iAttempts = 0;
    
    while (!$bUnique && $iAttempts < 10) {
        $aCheck = $oDB->findByPID(generatePID("username value")); // Query the database for a PID matching whats generated
        if (!$aCheck) { // If nothing is found, exit the loop
            $bUnique = true;
        } else {
            $iAttempts++;
        }
    }
    
    // Save PID and such...
    

    ...これはおそらく1つの「チェック」クエリのみを生成し、一意の場合は2つしか生成せず、一意の文字列を保証します。



    1. PostgreSQLはPL/pgSQLでトランザクションを開始/終了できません

    2. PDOを使用した複数のインサート

    3. ハッシュKey-Valueストアを含むデータベースフィールドを更新するためのベストプラクティス/一貫した方法はありますか?

    4. sqliteに記録するデータを挿入しています