sql >> Databasteknik >  >> RDS >> Mysql

Infoga unika strängar med 8 slumpmässiga tecken

Detta ger dig en slumpmässig sträng på 8 tecken:

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

Hittade här:http://www.richardlord.net/blog/php-password- säkerhet

Eller om användarnamnsfältet är unikt kan du också använda:

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

Även om det är extremt osannolikt, särskilt för md5, garanterar inget av fallen en unik sträng, så jag skulle förmodligen göra något så här:

// 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...

... vilket förmodligen bara skulle ge 1 "check"-fråga, kanske 2 i unika fall, och skulle säkerställa en unik sträng.



  1. Slumpmässigt viktat urval av en händelse

  2. Hur anropar man en Oracle-funktion från Hibernate med en returparameter?

  3. SQL Server Active Sessions and Status

  4. django.core.exceptions.ImproperlyConfigured:Fel vid laddning av MySQLdb-modul:Ingen modul med namnet MySQLdb