sql >> データベース >  >> RDS >> Mysql

jQueryValidateRemote-電子メールがすでに存在するかどうかを確認します

    クエリの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ステートメントでは機能しません。 stackoverflow .com / a / 31569733/1011527

    • いいえ、rowCount()はSELECTステートメントでは機能しないため、これは機能しません。行数はまったく取得されていません。

    • $ query-> rowCount()をエコーし​​てみると、問題が発生します

    上記のコードがライブサーバーでどのように機能しているか そうすべきではないときに、私はいくつかの掘り下げを行い、これを見つけました;

    そしてこれ

    上記のステートメントのソースphp.netマニュアル

    上記の両方のステートメントで、一部のデータベース およびほとんどのデータベースの場合 rowCount() 機能します しかし一方で

    • ポータブルアプリケーションに依存すべきではありません
    • PDOStatement ::fetchColumn()を使用して、返される行数を取得します。その後、アプリケーションは正しいアクションを実行できます。

    OPは行数のみを必要とし、すべての行のすべてのデータを必要としないため、このようにすることもできます。クレジットは@JayBlanchardに送られます

    このコード例を使用する

    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. SQLで二重ネストされたNOTEXISTSステートメントが避けられないのはなぜですか

    2. Android Room Database、入力された最新のレコードの特定の値を取得します

    3. jsp用のnetbeansを使用したmysqlとの接続

    4. クラウド移行101:SQLServerからAzureへの移行