Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

jQuery Validate Remote - Periksa apakah email sudah ada

Anda harus mengubah jumlah baris jika / kondisi lain dalam kueri

Skrip

<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

Peringatan Jangan gunakan alasan kode PHP ini rowCount() mungkin tidak berfungsi jadi lewati dan lompat ke kode di bagian bawah jawaban.

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

Sunting: Karena @Jay Blanchard sangat konsisten dan yakin bahwa kode di atas tidak akan berfungsi

  • rowCount() tidak berfungsi untuk pernyataan SELECT. stackoverflow .com/a/31569733/1011527

  • Tidak, ini tidak akan berfungsi karena rowCount() tidak berfungsi untuk pernyataan SELECT. Anda tidak mendapatkan jumlah baris sama sekali.

  • Coba ulangi $query->rowCount() dan Anda akan melihat masalahnya

dan membuat saya bertanya-tanya Bagaimana kode di atas bekerja di server langsung saya ketika seharusnya tidak, saya melakukan penggalian dan menemukan ini;

dan ini

Sumber pernyataan di atas manual php.net

Dalam kedua pernyataan di atas, beberapa database dan Untuk sebagian besar basis data rowCount() berhasil tapi di sisi lain

  • tidak boleh diandalkan untuk aplikasi portabel
  • gunakan PDOStatement::fetchColumn() untuk mengambil jumlah baris yang akan dikembalikan. Aplikasi Anda kemudian dapat melakukan tindakan yang benar.

Karena OP hanya menginginkan jumlah baris dan tidak semua data dari semua baris, maka dapat juga dilakukan seperti ini. Kredit diberikan kepada @Jay Blanchard

Gunakan Contoh Kode Ini

membuat beberapa perubahan di PHP, gunakan isset fungsi.

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

Lihat Tindakan



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengurai skema MySQL di Jawa?

  2. Bagaimana cara menjalankan perintah MySQL di bash?

  3. perbarui kolom dengan mengurangi nilai

  4. MySQL bersyarat ORDER BY ASC/DESC untuk kolom tanggal

  5. Bagaimana cara mengubah dua tajuk kolom yang berbeda dari tabel database yang sudah ada sebelumnya di sqlalchemy?