Du skal ændre rækkeantallet, hvis / else betingelse i forespørgslen
Script
<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
Advarsel Brug ikke denne PHP-kodeårsag rowCount()
fungerer muligvis ikke, så spring det over og hop til kode nederst i svaret.
<?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';
}
}
?>
Rediger: Som @Jay Blanchard meget konsekvent og dødsikker på, at ovenstående kode ikke vil fungere
-
rowCount() virker ikke for SELECT-sætninger. stackoverflow .com/a/31569733/1011527
-
Nej, dette vil ikke virke, fordi rowCount() ikke virker for SELECT-sætninger. Du får slet ikke et antal rækker.
-
Prøv at gentage $query->rowCount(), og du vil se problemet
og får mig til at spekulere på, hvordan ovenstående kode fungerer på min live-server når det ikke burde, så jeg gravede lidt og fandt dette;
og dette
Kilde til ovenstående udsagn php.net manualer
I begge ovenstående udsagn, nogle databaser og For de fleste databaser rowCount()
virker men på den anden side
- bør ikke stole på for bærbare applikationer
- brug PDOStatement::fetchColumn() til at hente antallet af rækker, der vil blive returneret. Din applikation kan derefter udføre den korrekte handling.
Da OP kun ønsker optælling af rækker og ikke alle data for alle rækker, så kan det også gøres på denne måde. Kredit går til @Jay Blanchard
Brug dette kodeeksempel
lavet nogle ændringer i PHP, brug isset
funktion.
<?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';
}
}
?>