Mysql
 sql >> база данни >  >> RDS >> Mysql

Уникален код, базиран на уникален имейл адрес в таблицата на mysql?

Надявам се това да помогне:

а) Направих нещо много подобно на това, когато генерирах уникални кодове, които трябваше да се използват като URL адреси. Написах това, за да генерирам кодовете:

private function _generateCode($length = 5) {

    $characters = 'bcdfghjkmnpqrstvwxyz';

    $string = '';
    for ($i = 0; $i < $length; $i++) {
        $string .= $characters[rand(0, strlen($characters) - 1)];
    }

    return $string;

}

$characters е низ от "разрешени" знаци. Избрахме да премахнем гласните, така че да няма шанс да създаваме нежелани думи :) Можете да промените това. Има по-прости начини да го напишем, но ни трябваше нещо съвсем конкретно.

Ще го използвате по следния начин:

$unique_code = _generateCode();

б) За това просто увийте своя израз за вмъкване в проверка на изявление за избор за този уникален код. Ако кодът съществува, генерирайте друг код и опитайте отново. Един от начините, по които бихте могли да направите това е (NB:това не е тествано и може да е податливо на безкраен цикъл, ако случайно попаднете в ситуация, в която сте изразходвали всичките си кодове;) И вероятно трябва да добавите проверка. за да се уверите, че INSERT е бил успешен):

$unique_code = "";
$inserted = false;
// Keep looping until we've inserted a record
while(!$inserted) {
    // Generate a code
    $unique_code = _generateCode();
    // Check if it exists
    if ($result = mysqli->query("SELECT unique_code FROM coming_soon_emails WHERE unique_code = '$unique_code'")) {
        // Check no record exists
        if ($result->num_rows == 0) {
            // Create new record
            $mysqli->query("INSERT INTO coming_soon_emails (email,unique_code) VALUES ('" . $mysqli->real_escape_string($_POST['email']) . "','$unique_code')");
            // Set inserted to true to ext loop
            $inserted = true;
            // Close the result object
            $result->close();
        }
    } else {
        // Quit if we can't check the database
        die('Something went wrong with select');
    }   
}

// Output the code
echo $unique_code;

в) За да вмъкнете уникалния код, просто добавете това към вашия израз за вмъкване, където $unique_code е променливата, на която е присвоена връщаната стойност от функцията по-горе:

$mysqli->query("INSERT INTO coming_soon_emails (email,unique_code) VALUES ('".$mysqli->real_escape_string($_POST['email'])."','$unique_code')");

г) Просто повторете променливата, на която сте присвоили кода, например:

echo $unique_code;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:АКТУАЛИЗИРАНЕ с INNER JOIN с LIMIT

  2. Ajax Pagination с Jquery, PHP, Mysql

  3. Класиране с милиони записи

  4. как да свържете динамичен json в treeview wpf

  5. Избиране на последния запис от INNER JOIN и групиране