Mysql
 sql >> база данни >  >> RDS >> Mysql

jQuery Validate Remote - Проверете дали имейл вече съществува

Трябва да промените броя на редовете if / else в заявката

Скрипт

<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

Предупреждение Не използвайте този PHP код причина rowCount() може да не работи, затова го пропуснете и преминете към кода в долната част на отговора.

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

Редактиране: Тъй като @Jay Blanchard е много последователен и съм сигурен, че горният код няма да работи

  • rowCount() не работи за изрази SELECT. stack .com/a/31569733/1011527

  • Не, това няма да работи, защото rowCount() не работи за изрази SELECT. Изобщо не получавате броя на редовете.

  • Опитайте да повторите $query->rowCount() и ще видите проблема

и ме кара да се чудя как горният код работи на моя сървър на живо когато не трябва, така че поразрових и открих това;

и това

Източник на горните твърдения наръчници за php.net

И в двете по-горе твърдения, някои бази данни и За повечето бази данни rowCount() работи но от друга страна

  • не трябва да се разчита за преносими приложения
  • използвайте PDOStatement::fetchColumn(), за да извлечете броя на редовете, които ще бъдат върнати. След това приложението ви може да извърши правилното действие.

Тъй като OP иска само броя на редовете, а не всички данни на всички редове, може да се направи и по този начин. Заслугата е на @Jay Blanchard

Използвайте този пример за код

направи някои промени в PHP, използвайте isset функция.

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

Вижте в действие



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да проверите базата данни и в резултат да проверите радио бутон?

  2. Името запазена дума ли е в MySQL?

  3. Колоната java.sql.sqlexception не е намерена

  4. Как да накарам заявка да не връща нищо, когато няма условия?

  5. Как правилно да се справяме с блокирането на InnoDB в Java/JDBC?