Du måste ändra radantalet om / annat villkor i frågan
Skript
<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
Varning Använd inte denna PHP-kod orsak rowCount()
kanske inte fungerar så hoppa över det och hoppa till koden längst ner 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';
}
}
?>
Redigera: Som @Jay Blanchard mycket konsekvent och helt säker på att ovanstående kod inte kommer att fungera
-
rowCount() fungerar inte för SELECT-satser. stackoverflow .com/a/31569733/1011527
-
Nej, detta kommer inte att fungera eftersom rowCount() inte fungerar för SELECT-satser. Du får inte ett antal rader alls.
-
Försök att upprepa $query->rowCount() så ser du problemet
och får mig att undra hur ovanstående kod fungerar på min liveserver när det inte borde så jag grävde lite och hittade det här;
och det här
Källa till ovanstående uttalanden php.net manualer
I båda ovanstående uttalanden, vissa databaser och För de flesta databaser rowCount()
fungerar men å andra sidan
- bör inte lita på för bärbara applikationer
- använd PDOStatement::fetchColumn() för att hämta antalet rader som kommer att returneras. Din applikation kan sedan utföra rätt åtgärd.
Eftersom OP bara vill ha antalet rader och inte alla data för alla rader så kan det också göras så här. Kredit går till @Jay Blanchard
Använd detta kodexempel
gjort några ändringar i PHP, använd 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';
}
}
?>