Mysql
 sql >> Baza danych >  >> RDS >> Mysql

jQuery Validate Remote - Sprawdź, czy e-mail już istnieje

Musisz zmienić liczbę wierszy, jeśli warunek / else w zapytaniu

Skrypt

<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

Ostrzeżenie Nie używaj tego powodu kodu PHP rowCount() może nie działać, więc pomiń to i przejdź do kodu na dole odpowiedzi.

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

Edytuj: Jako @Jay Blanchard bardzo konsekwentny i martwy, że powyższy kod nie zadziała

  • rowCount() nie działa dla instrukcji SELECT. stackoverflow .com/a/31569733/1011527

  • Nie, to nie zadziała, ponieważ funkcja rowCount() nie działa dla instrukcji SELECT. W ogóle nie masz liczby wierszy.

  • Spróbuj powtórzyć $query->rowCount(), a zobaczysz problem

i sprawia, że ​​zastanawiam się, jak powyższy kod działa na moim serwerze na żywo kiedy nie powinno, więc pokopałem trochę i znalazłem to;

i to

Źródło powyższych oświadczeń podręczniki php.net

W obu powyższych stwierdzeniach niektóre bazy danych i Dla większości baz danych rowCount() działa ale z drugiej strony

  • nie należy polegać na aplikacjach przenośnych
  • użyj PDOStatement::fetchColumn(), aby pobrać liczbę wierszy, które zostaną zwrócone. Twoja aplikacja może wtedy wykonać odpowiednią akcję.

Ponieważ OP chce tylko liczyć wiersze, a nie wszystkie dane wszystkich wierszy, można to również zrobić w ten sposób. Kredyt należy do @Jay Blancharda

Użyj tego przykładu kodu

dokonał pewnych zmian w PHP, użyj isset funkcja.

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

Zobacz w działaniu



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. konfiguracja serwera mysql instalacja nie powiodła się LUB nie można uruchomić usługi

  2. Jak zaktualizować dwie tabele w jednym zestawieniu?

  3. Aktualna data w klauzuli WHERE MySQL

  4. Czy istnieje sposób na buforowanie widoku, aby zapytania do niego były szybkie?

  5. Narzędzie do monitorowania zapytań mysql