sql >> Base de Datos >  >> RDS >> Mysql

Llamada Ajax con consulta PHP / MySQLi que devuelve resultados incorrectos

No hay razón para usar num_rows , que no solo es confuso, fácil de usar incorrectamente, sino que también podría causar problemas de rendimiento si se usa incorrectamente.

Solo busca COUNT(1) y luego obtenga una sola columna de la primera fila en su 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";
}

Si por alguna extraña razón quisiera quedarse con num_rows tendrías que llamar a store_result() en la declaración y luego obtenga el num_rows de la instrucción o llame a get_result() y lea el valor de num_rows en el conjunto de resultados devuelto.