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

jQuery Validate Remote – Zkontrolujte, zda již e-mail neexistuje

Musíte změnit počet řádků if / else v dotazu

Skript

<script>
$(document).ready(function () {
    $('#signup').validate({ 
    errorLabelContainer: "#cs-error-note",
    wrapper: "li",
    rules: {
        email: {
            required: true,
            email: true,
                remote: {
                    url: "check-username.php",
                    type: "post"
                 }
        }
    },
    messages: {
        email: {
            required: "Please enter your email address.",
            email: "Please enter a valid email address.",
            remote: "Email already in use!"
        }
    },
    submitHandler: function(form) {
                        form.submit();
                     }
    });
});
</script>

HTML

<form class="form-inline" role="form" id="signup">
    <div class="form-group">
    <label for="email">Email address:</label>
        <input type="email" class="form-control" name="email" id="email">
    </div>
</form>

PHP

Upozornění Nepoužívejte tento důvod kódu PHP rowCount() nemusí fungovat, takže to přeskočte a přejděte na kód ve spodní části odpovědi.

<?php
    require('../../private_html/db_connection/connection.php');
    $conn = new PDO("mysql:host=$servername; dbname=$dbname", $username, $password);    
    if(isset($_POST['email'])) {
        $email = $_POST['email'];
        $query = $conn->prepare("SELECT email FROM user_accounts WHERE email = '$email'");
        $query->execute();
        if( $query->rowCount() > 0 ){
            echo 'false';
        } else {
            echo 'true';
        }
    }
?>

Upravit: Jako @Jay Blanchard je velmi konzistentní a zcela jistý, že výše uvedený kód nebude fungovat

  • rowCount() nefunguje pro příkazy SELECT. stackoverflow .com/a/31569733/1011527

  • Ne, to nebude fungovat, protože rowCount() nefunguje pro příkazy SELECT. Vůbec nezískáváte počet řádků.

  • Zkuste opakovat $query->rowCount() a problém uvidíte

a nutí mě přemýšlet, jak výše uvedený kód funguje na mém živém serveru když by to nemělo být, tak jsem trochu hledal a našel toto;

a toto

Zdroj výše uvedených prohlášení php.net manuály

V obou výše uvedených prohlášeních některé databáze a Pro většinu databází rowCount() funguje ale na druhou stranu

  • nemělo by se na něj spoléhat u přenosných aplikací
  • použijte PDOStatement::fetchColumn() k získání počtu řádků, které budou vráceny. Vaše aplikace pak může provést správnou akci.

Protože OP chce pouze počet řádků a ne všechna data všech řádků, lze to provést také takto. Kredit patří @Jay Blanchard

Použijte tento příklad kódu

provedl nějaké změny v PHP, použijte isset funkce.

<?php
    require('../../private_html/db_connection/connection.php');
    $conn = new PDO("mysql:host=$servername; dbname=$dbname", $username, $password);    
    if(isset($_POST['email'])) {
        $email = $_POST['email'];
        $query = $conn->prepare("SELECT email FROM user_accounts WHERE email = '$email'");
        $query->execute();
        $rows = $query->fetchAll();
        $total_rows = count($rows);
            if( $total_rows > 0 ){
                echo 'false';
            } else {
                echo 'true';
            }
    }
?>

Podívejte se v akci



  1. Dvě tabulky se stejnými sloupci nebo jedna tabulka s dalším sloupcem?

  2. Čárky v datech CSV

  3. Událost Mysql nefunguje

  4. Jak získat seznam pohledů MySQL?