Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

जब लोग पंजीकरण करते हैं तो डुप्लिकेट उपयोगकर्ता नाम कैसे रोकें?

डेटाबेस में डुप्लिकेट उपयोगकर्ता नामों को रोकने का सबसे अच्छा तरीका डेटाबेस कॉलम को प्राथमिक कुंजी बनाना या इसे अद्वितीय के रूप में चिह्नित करना है।

-- Make it a primary key
ALTER TABLE users ADD PRIMARY KEY(username);
-- or set it to be unique
ALTER TABLE users ADD UNIQUE (username);

यह एक ही उपयोगकर्ता नाम के साथ तालिका में डुप्लिकेट रिकॉर्ड को रोकेगा। जब आप वही डालने का प्रयास करेंगे तो एक त्रुटि उत्पन्न होगी।

फिर आप PHP में अपवाद पकड़ सकते हैं और कारण की जांच कर सकते हैं। डुप्लिकेट बाधा SQL त्रुटि कोड 1062 है।

पीडीओ का उपयोग करते समय इस त्रुटि को कैसे पकड़ें इसका एक उदाहरण यहां दिया गया है:

$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!";
    }
}

यहाँ एक उदाहरण दिया गया है कि 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!";
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में REGEXP_SUBSTR () फ़ंक्शन कैसे काम करता है

  2. SQL चयन सिंटैक्स - DBMS द्वारा सूचीबद्ध

  3. Neo4j - Cypher . का उपयोग करके एक बाधा बनाएं

  4. PHP, MySQL त्रुटि:कॉलम संख्या पंक्ति 1 पर मान गणना से मेल नहीं खाती

  5. एक मान के लिए एकाधिक स्तंभों की जाँच करना