Vous devez modifier le nombre de lignes si/autre condition dans la requête
Scénario
<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
Avertissement N'utilisez pas cette raison de code PHP rowCount()
peut ne pas fonctionner, alors ignorez-le et passez au code en bas de la réponse.
<?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';
}
}
?>
Modifier : Comme @Jay Blanchard très cohérent et sûr que le code ci-dessus ne fonctionnera pas
-
rowCount() ne fonctionne pas pour les instructions SELECT. stackoverflow .com/a/31569733/1011527
-
Non, cela ne fonctionnera pas car rowCount() ne fonctionne pas pour les instructions SELECT. Vous n'obtenez aucun nombre de lignes.
-
Essayez de faire écho à $query->rowCount() et vous verrez le problème
et me fait me demander comment le code ci-dessus fonctionne sur mon serveur en direct quand ça ne devrait pas alors j'ai fait quelques recherches et j'ai trouvé ça ;
et ça
Source des déclarations ci-dessus manuels php.net
Dans les deux déclarations ci-dessus, certaines bases de données et Pour la plupart des bases de données rowCount()
fonctionne mais d'autre part
- ne doit pas être utilisé pour les applications portables
- utilisez PDOStatement::fetchColumn() pour récupérer le nombre de lignes qui seront renvoyées. Votre application peut alors effectuer l'action correcte.
Comme OP ne veut que le nombre de lignes et non toutes les données de toutes les lignes, cela peut également être fait comme ceci. Le mérite revient à @Jay Blanchard
Utilisez cet exemple de code
fait quelques changements dans PHP, utilisez isset
fonction.
<?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';
}
}
?>