U moet het aantal rijen wijzigen als / else-voorwaarde in query
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
Waarschuwing Gebruik deze PHP-code niet, reden rowCount()
werkt mogelijk niet, dus sla het over en ga naar de code onderaan het antwoord.
<?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';
}
}
?>
Bewerken: Als @Jay Blanchard zeer consistent en dood zeker dat bovenstaande code niet zal werken
-
rowCount() werkt niet voor SELECT-instructies. stackoverflow .com/a/31569733/1011527
-
Nee, dit werkt niet omdat rowCount() niet werkt voor SELECT-instructies. Je krijgt helemaal geen rijentelling.
-
Probeer $query->rowCount() te herhalen en je zult het probleem zien
en ik vraag me af hoe de bovenstaande code werkt op mijn live server wanneer het niet zou moeten, dus ik heb wat gegraven en vond dit;
en dit
Bron van bovenstaande verklaringen php.net-handleidingen
In beide bovenstaande verklaringen, sommige databases en Voor de meeste databases rowCount()
werkt wel maar aan de andere kant
- er mag niet op worden vertrouwd voor draagbare toepassingen
- gebruik PDOStatement::fetchColumn() om het aantal rijen op te halen dat zal worden geretourneerd. Uw applicatie kan dan de juiste actie uitvoeren.
Omdat OP alleen het aantal rijen wil en niet alle gegevens van alle rijen, kan het ook op deze manier worden gedaan. Krediet gaat naar @Jay Blanchard
Gebruik dit codevoorbeeld
enkele wijzigingen aangebracht in PHP, gebruik isset
functie.
<?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';
}
}
?>