sql >> Databáze >  >> RDS >> Mysql

Jedinečný kód založený na jedinečné e-mailové adrese v tabulce mysql?

Doufám, že to pomůže:

a) Udělal jsem něco velmi podobného, ​​když jsem generoval jedinečné kódy, které měly být použity jako adresy URL. Napsal jsem toto, abych vygeneroval kódy:

private function _generateCode($length = 5) {

    $characters = 'bcdfghjkmnpqrstvwxyz';

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

    return $string;

}

$characters je řetězec "povolených" znaků. Rozhodli jsme se odstranit samohlásky, aby nebylo možné vytvářet nechtěná slova :) Můžete to změnit. Existují jednodušší způsoby, jak to napsat, ale potřebovali jsme něco docela konkrétního.

Použili byste to takto:

$unique_code = _generateCode();

b) Za tímto účelem stačí zabalit váš příkaz insert do příkazu select a zkontrolovat tento jedinečný kód. Pokud kód existuje, vygenerujte jiný kód a zkuste to znovu. Jedním ze způsobů, jak to můžete udělat, je (Poznámka:toto není testováno a může to být náchylné k nekonečné smyčce, pokud se náhodou dostanete do situace, kdy jste spotřebovali všechny své kódy;) A pravděpodobně byste měli přidat kontrolu abyste se ujistili, že INSERT bylo úspěšné):

$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;

c) Chcete-li vložit jedinečný kód, přidejte jej do příkazu vložení, kde $unique_code je proměnná, které je přiřazena návratová hodnota z výše uvedené funkce:

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

d) Stačí echo proměnnou, které jste přiřadili kód, např.:

echo $unique_code;


  1. Jarní podpora JDBC a velká datová sada

  2. Jak uložit prázdnou hodnotu jako Integerfield

  3. MySQL vybírá horní řádky se stejnými hodnotami podmínek

  4. pokouším se aktualizovat databázi mysql v php