sql >> Database teknologi >  >> RDS >> Mysql

Indsæt unikke strenge med 8 tilfældige tegn

Dette vil give dig en tilfældig streng på 8 tegn:

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

Findes her:http://www.richardlord.net/blog/php-password- sikkerhed

Eller hvis brugernavnsfeltet er unikt, kan du også bruge:

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

Selvom det er ekstremt usandsynligt, især for md5, garanterer ingen af ​​tilfældene en unik streng, så jeg ville nok gøre noget som dette:

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

... hvilket sandsynligvis kun ville give 1 'check'-forespørgsel, måske 2 i unikke tilfælde, og ville sikre en unik streng.



  1. Oracle:PÅ DUBLIKAT NØGLEOPDATERING

  2. Fjern kommaer ved hjælp af php fra mysql

  3. Kopiering af data fra en fil til en CLOB i Oracle

  4. MySQL ONLY IN() tilsvarende klausul