Debe cambiar el recuento de filas si / si no la condición en la consulta
Guión
<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
Advertencia No utilice este motivo de código PHP rowCount()
puede que no funcione, así que sáltelo y salte al código en la parte inferior de la respuesta.
<?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, muy consistente y absolutamente seguro de que el código anterior no funcionará
-
rowCount() no funciona para sentencias SELECT. stackoverflow .com/a/31569733/1011527
-
No, esto no funcionará porque rowCount() no funciona para las instrucciones SELECT. No obtiene ningún recuento de filas.
-
Intente hacer eco de $query->rowCount() y verá el problema
y me hace preguntarme cómo funciona el código anterior en mi servidor en vivo cuando no debería, así que investigué un poco y encontré esto;
y esto
Fuente de las instrucciones anteriores de los manuales de php.net
En las dos declaraciones anteriores, algunas bases de datos y Para la mayoría de las bases de datos rowCount()
funciona pero por otro lado
- no se debe confiar en él para aplicaciones portátiles
- use PDOStatement::fetchColumn() para recuperar el número de filas que se devolverán. Su aplicación puede entonces realizar la acción correcta.
Como OP solo quiere el recuento de filas y no todos los datos de todas las filas, también se puede hacer así. El crédito es para @Jay Blanchard
Usar este ejemplo de código
hizo algunos cambios en PHP, use isset
función.
<?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';
}
}
?>