sql >> Database teknologi >  >> RDS >> Mysql

jQuery Validate Remote - Tjek, om e-mail allerede eksisterer

Du skal ændre rækkeantallet, hvis / else betingelse i forespørgslen

Script

<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

Advarsel Brug ikke denne PHP-kodeårsag rowCount() fungerer muligvis ikke, så spring det over og hop til kode nederst i svaret.

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

Rediger: Som @Jay Blanchard meget konsekvent og dødsikker på, at ovenstående kode ikke vil fungere

  • rowCount() virker ikke for SELECT-sætninger. stackoverflow .com/a/31569733/1011527

  • Nej, dette vil ikke virke, fordi rowCount() ikke virker for SELECT-sætninger. Du får slet ikke et antal rækker.

  • Prøv at gentage $query->rowCount(), og du vil se problemet

og får mig til at spekulere på, hvordan ovenstående kode fungerer på min live-server når det ikke burde, så jeg gravede lidt og fandt dette;

og dette

Kilde til ovenstående udsagn php.net manualer

I begge ovenstående udsagn, nogle databaser og For de fleste databaser rowCount() virker men på den anden side

  • bør ikke stole på for bærbare applikationer
  • brug PDOStatement::fetchColumn() til at hente antallet af rækker, der vil blive returneret. Din applikation kan derefter udføre den korrekte handling.

Da OP kun ønsker optælling af rækker og ikke alle data for alle rækker, så kan det også gøres på denne måde. Kredit går til @Jay Blanchard

Brug dette kodeeksempel

lavet nogle ændringer i PHP, brug 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';
            }
    }
?>

Se i aktion



  1. SQL til hierarkisk relation

  2. MySQL-opdateringsfelt baseret på min. værdi for et andet felt, når det er grupperet efter et tredje

  3. Hvordan gemmer man arabisk tekst i mysql-databasen ved hjælp af python?

  4. tildele alt mens resultater til en variabel