Você tem que alterar a contagem de linhas if / else condição na consulta
Roteiro
<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
Aviso Não use este código PHP motivo
rowCount()
pode não funcionar, então pule e pule para o código na parte inferior da resposta. <?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';
}
}
?>
Editar: Como @Jay Blanchard muito consistente e com certeza absoluta de que o código acima não funcionará
-
rowCount() não funciona para instruções SELECT. stackoverflow .com/a/31569733/1011527
-
Não, isso não funcionará porque rowCount() não funciona para instruções SELECT. Você não está recebendo uma contagem de linhas.
-
Tente ecoar $query->rowCount() e você verá o problema
e me faz pensar como o código acima está funcionando no meu servidor ativo quando não deveria, fiz algumas pesquisas e encontrei isso;
e isto
Fonte das declarações acima php.net manuais
Em ambas as declarações acima, alguns bancos de dados e Para a maioria dos bancos de dados
rowCount()
funciona mas por outro lado - não deve ser usado para aplicativos portáteis
- use PDOStatement::fetchColumn() para recuperar o número de linhas que serão retornadas. Seu aplicativo pode então executar a ação correta.
Como o OP quer apenas a contagem de linhas e não todos os dados de todas as linhas, também pode ser feito assim. O crédito vai para @Jay Blanchard
Use este exemplo de código
fez algumas mudanças no PHP, use
isset
função. <?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';
}
}
?>
Veja em ação