Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

jQuery Validate Remote - Kiểm tra xem email đã tồn tại chưa

Bạn phải thay đổi số lượng hàng điều kiện if / else trong truy vấn

Tập lệnh

<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

Cảnh báo Không sử dụng mã PHP này vì lý do rowCount() có thể không hoạt động, vì vậy hãy bỏ qua và chuyển đến mã ở cuối câu trả lời.

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

Chỉnh sửa: Vì @Jay Blanchard rất nhất quán và chắc chắn rằng mã trên sẽ không hoạt động

  • rowCount () không hoạt động đối với các câu lệnh SELECT. stackoverflow .com / a / 31569733/1011527

  • Không, điều này sẽ không hoạt động vì rowCount () không hoạt động đối với các câu lệnh SELECT. Bạn hoàn toàn không nhận được số hàng.

  • Hãy thử lặp lại $ query-> rowCount () và bạn sẽ thấy sự cố

và khiến tôi tự hỏi Làm thế nào đoạn mã trên đang hoạt động trên máy chủ trực tiếp của tôi khi không nên, tôi đã thực hiện một số đào và tìm thấy điều này;

và điều này

Nguồn của Tuyên bố trên php.net hướng dẫn sử dụng

Trong cả hai câu lệnh trên, một số cơ sở dữ liệu Đối với hầu hết các cơ sở dữ liệu rowCount() không hoạt động nhưng mặt khác

  • không nên dựa vào các ứng dụng di động
  • sử dụng PDOStatement ::fetchColumn () để truy xuất số hàng sẽ được trả về. Sau đó, ứng dụng của bạn có thể thực hiện đúng hành động.

Vì OP chỉ muốn đếm số hàng chứ không phải tất cả dữ liệu của tất cả các hàng nên cũng có thể được thực hiện như thế này. Tín dụng được chuyển đến @Jay Blanchard

Sử dụng ví dụ mã này

đã thực hiện một số thay đổi trong PHP, sử dụng isset chức năng.

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

Xem trong hành động



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng Passport với Sequelize và MySQL

  2. Cách cài đặt MySQL với phpMyAdmin trên Ubuntu 12.04

  3. Làm thế nào để chuyển đổi các ký tự lạ này? (à «, Ã, ì, ù, Ã)

  4. Mysql dừng các từ và kết hợp

  5. Mysql_query có cam kết mọi thứ không