Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Chamada Ajax com consulta PHP / MySQLi retornando resultados errados


Não há razão para usar num_rows , que não só é confuso, fácil de usar indevidamente, mas também pode causar problemas de desempenho se for mal utilizado.

Basta buscar COUNT(1) e, em seguida, busque uma única coluna da primeira linha em seu resultado SQL.
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = new mysqli($host, $username, $password, $database);
$conn->set_charset('utf8mb4');

$stmt = $conn->prepare("SELECT COUNT(1) FROM users WHERE username = ?");
$stmt->bind_param("s", $_POST['username']);
$stmt->execute();
$exists = $stmt->get_result()->fetch_row()[0];

if($exists) {
    echo "valid";
} else {
    echo "invalid";
}

Se você quisesse, por algum motivo estranho, ficar com num_rows você teria que chamar store_result() na instrução e, em seguida, obtenha o num_rows da instrução ou chame get_result() e leia o valor de num_rows no conjunto de resultados retornado.