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 và Đố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';
}
}
?>