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

Zkontrolujte, zda to není duplicitní

Pokud chcete zkontrolovat, zda username je již použito :

SELECT * FROM users WHERE username = :username

Pokud vrátíte jeden řádek:vyhodíte chybu , jinak provedete INSERT

Váš kód by tedy měl vypadat takto:

if ($valid) {
    $pdo = Database::connect();
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql_check = "SELECT * FROM users WHERE username = :username";
    $test = $pdo->prepare($sql_check);
    $test->bindParam(':username', $username); 
    $test->execute;

Nyní jsou zde dvě řešení, jak zkontrolovat, zda máte jeden řádek:

    if($test->rowCount() > 0) {
        // error
    }      

nebo

    $user = $test->fetch();

    if (!empty($user)) {
        // error
    }

A nyní, pokud nemáte chybu, vložte :

    else {
        //$password = md5($password);
        $sql = "INSERT INTO users (username,password,role) values(?, ?, ?)";
        $q = $pdo->prepare($sql);
        $q->execute(array($username,$password,$role));
        Database::disconnect();
        header("Location: index.php");
    }
}


  1. Oracle Cloud Breakdown – náklady na hostování databáze na OCI

  2. SQLite Představuje funkci UNIXEPOCH().

  3. Reference:Jaký je dokonalý příklad kódu pomocí rozšíření MySQL?

  4. SQL Server Chyba 213:Název sloupce nebo počet zadaných hodnot neodpovídá definici tabulky.