Memastikan Nama Pengguna Unik Semasa Pendaftaran
Mencegah nama pengguna pendua semasa pendaftaran adalah penting untuk mengekalkan integriti data. Begini cara untuk melaksanakan fungsi ini dengan cekap:
Menambah Indeks Unik
Pendekatan pilihan ialah menambah indeks UNIK pada lajur nama pengguna dalam pangkalan data. Ini akan melarang pemasukan nama pengguna pendua.
-- Make it unique ALTER TABLE users ADD UNIQUE (username);
Penguatkuasaan Kekangan Pangkalan Data
Indeks unik dalam pangkalan data akan mencetuskan ralat apabila cuba memasukkan nama pengguna pendua.
Mengendalikan Ralat dalam PHP
Untuk mengesan ralat dalam PHP, anda boleh menyemak kod ralat SQLSTATE. Untuk kekangan pendua, kod ralat ialah 1062.
Contoh PDO
$error = []; $username = 'Dharman'; $pdo = new \PDO('mysql:host=localhost;dbname=test;charset=utf8mb4', 'user', 'password', [ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, // make sure the error reporting is enabled! \PDO::ATTR_EMULATE_PREPARES => false ]); try { $stmt = $pdo->prepare('INSERT INTO users(username) VALUE(?)'); $stmt->execute([$username]); } catch (\PDOException $e) { if ($e->errorInfo[1] === 1062) { $error[] = "This username is already taken!"; } else { throw $e; // let the exception to be processed further } }
Contoh mysqli
$error = []; $username = 'Dharman'; // make sure the error reporting is enabled! mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); $mysqli = new mysqli('localhost', 'user', 'password', 'test'); $mysqli->set_charset('utf8mb4'); try { $stmt = $mysqli->prepare('INSERT INTO users(username) VALUE(?)'); $stmt->bind_param('s', $username); $stmt->execute(); } catch (\mysqli_sql_exception $e) { if ($e->getCode() === 1062) { $error[] = "This username is already taken!"; } else { throw $e; // let the exception to be processed further } }
Dengan menggunakan indeks unik dan mengendalikan ralat dalam kod aplikasi, anda boleh mencegah pendua dengan berkesan nama pengguna semasa pendaftaran, memastikan integriti pangkalan data pengguna anda.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Menghalang Nama Pengguna Pendua Semasa Pendaftaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!