Mysql
 sql >> Datenbank >  >> RDS >> Mysql

jQuery Validate Remote - Prüfen Sie, ob die E-Mail bereits vorhanden ist

Sie müssen die Zeilenanzahl ändern, wenn / sonst Bedingung in der Abfrage

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

Warnung Verwenden Sie diesen PHP-Codegrund rowCount() nicht funktioniert möglicherweise nicht, also überspringen Sie es und springen Sie zum Code am Ende der Antwort.

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

Bearbeiten: Als @Jay Blanchard sehr konsequent und absolut sicher, dass der obige Code nicht funktionieren wird

  • rowCount() funktioniert nicht für SELECT-Anweisungen. Stackoverflow .com/a/31569733/1011527

  • Nein, das wird nicht funktionieren, weil rowCount() nicht für SELECT-Anweisungen funktioniert. Sie erhalten überhaupt keine Zeilenanzahl.

  • Versuchen Sie, $query->rowCount() zu wiederholen, und Sie werden das Problem sehen

und ich frage mich, wie der obige Code auf meinem Live-Server funktioniert wenn es nicht so sein sollte, habe ich etwas gegraben und das hier gefunden;

und das

Quelle der obigen Anweisungen in den php.net-Handbüchern

In beiden obigen Aussagen einige Datenbanken und Für die meisten Datenbanken rowCount() funktioniert sondern andererseits

  • sollte nicht für portable Anwendungen verwendet werden
  • Verwenden Sie PDOStatement::fetchColumn(), um die Anzahl der Zeilen abzurufen, die zurückgegeben werden. Ihre Anwendung kann dann die richtige Aktion ausführen.

Da OP nur die Anzahl der Zeilen und nicht alle Daten aller Zeilen möchte, kann dies auch so erfolgen. Dank geht an @Jay Blanchard

Verwenden Sie dieses Codebeispiel

Einige Änderungen in PHP vorgenommen, verwenden Sie isset Funktion.

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

In Aktion sehen