Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kode unik berdasarkan alamat email unik di tabel mysql?

Semoga membantu:

a) Saya melakukan sesuatu yang sangat mirip dengan ini di mana saya membuat kode unik yang akan digunakan sebagai URL. Saya menulis ini untuk menghasilkan kode:

private function _generateCode($length = 5) {

    $characters = 'bcdfghjkmnpqrstvwxyz';

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

    return $string;

}

$characters adalah string karakter "diizinkan". Kami memilih untuk menghapus vokal sehingga tidak ada kemungkinan membuat kata-kata yang tidak diinginkan :) Anda dapat mengubah ini. Ada cara yang lebih sederhana untuk menulisnya, tetapi kami membutuhkan sesuatu yang cukup spesifik.

Anda akan menggunakannya seperti ini:

$unique_code = _generateCode();

b) Untuk ini cukup bungkus pernyataan sisipan Anda dalam pernyataan pilih, periksa kode unik itu. Jika kode ada, buat kode lain dan coba lagi. Salah satu cara Anda dapat melakukannya adalah (NB:ini tidak diuji dan mungkin rentan terhadap infinite loop jika Anda masuk ke situasi di mana Anda telah menggunakan semua kode Anda;) Dan Anda mungkin harus menambahkan tanda centang untuk memastikan INSERT berhasil):

$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) Untuk menyisipkan kode unik cukup tambahkan ini ke pernyataan sisipan Anda di mana $unique_code adalah variabel yang diberi nilai kembalian dari fungsi di atas:

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

d) Cukup gema variabel yang Anda tetapkan kodenya misalnya:

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. Perintah Laravel berdasarkan hubungan hasmany

  2. mengatur port mamp ke 80 dan 3306

  3. SQL menggabungkan beberapa nilai dari kolom menjadi satu sel

  4. Bagaimana saya bisa menghapus setiap kolom dalam tabel di MySQL?

  5. Mesin penyimpanan MySQL untuk tabel log