Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wstaw unikalne ciągi 8 losowych znaków

To da ci losowy 8-znakowy ciąg:

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

Znalezione tutaj:http://www.richardlord.net/blog/php-password- bezpieczeństwo

Lub jeśli pole nazwy użytkownika jest unikalne, możesz również użyć:

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

Chociaż jest to bardzo mało prawdopodobne, szczególnie w przypadku md5, żaden przypadek nie gwarantuje unikalnego ciągu, więc prawdopodobnie zrobiłbym coś takiego:

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

... co prawdopodobnie dałoby tylko 1 zapytanie sprawdzające, może 2 w unikalnych przypadkach i zapewniłoby unikalny ciąg.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak automatycznie zalogować się w MySQL ze skryptu powłoki?

  2. MySQL - jak z przodu pad kod pocztowy z 0?

  3. PHP - Ustaw klucz tablicy mojego zapytania jako identyfikator

  4. Kwalifikowanie tymczasowej nazwy kolumny tabeli w jOOQ

  5. MySQL obcina tekst za pomocą wielokropka