Mysql
 sql >> Base de données >  >> RDS >> Mysql

jQuery Validate Remote - Vérifier si l'e-mail existe déjà

Vous devez modifier le nombre de lignes si/autre condition dans la requête

Scénario

<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

Avertissement N'utilisez pas cette raison de code PHP rowCount() peut ne pas fonctionner, alors ignorez-le et passez au code en bas de la réponse.

<?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';
        }
    }
?>

Modifier : Comme @Jay Blanchard très cohérent et sûr que le code ci-dessus ne fonctionnera pas

  • rowCount() ne fonctionne pas pour les instructions SELECT. stackoverflow .com/a/31569733/1011527

  • Non, cela ne fonctionnera pas car rowCount() ne fonctionne pas pour les instructions SELECT. Vous n'obtenez aucun nombre de lignes.

  • Essayez de faire écho à $query->rowCount() et vous verrez le problème

et me fait me demander comment le code ci-dessus fonctionne sur mon serveur en direct quand ça ne devrait pas alors j'ai fait quelques recherches et j'ai trouvé ça ;

et ça

Source des déclarations ci-dessus manuels php.net

Dans les deux déclarations ci-dessus, certaines bases de données et Pour la plupart des bases de données rowCount() fonctionne mais d'autre part

  • ne doit pas être utilisé pour les applications portables
  • utilisez PDOStatement::fetchColumn() pour récupérer le nombre de lignes qui seront renvoyées. Votre application peut alors effectuer l'action correcte.

Comme OP ne veut que le nombre de lignes et non toutes les données de toutes les lignes, cela peut également être fait comme ceci. Le mérite revient à @Jay Blanchard

Utilisez cet exemple de code

fait quelques changements dans PHP, utilisez isset fonction.

<?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';
            }
    }
?>

Voir en action