Mysql
 sql >> Database >  >> RDS >> Mysql

Chiamata Ajax con query PHP / MySQLi che restituisce risultati errati

Non c'è motivo per usare num_rows , che non solo crea confusione, è facile da usare in modo improprio, ma potrebbe anche causare problemi di prestazioni se utilizzato in modo improprio.

Basta recuperare COUNT(1) e quindi recuperare una singola colonna dalla prima riga nel risultato 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 per qualche strano motivo volevi restare con num_rows dovresti chiamare store_result() sull'istruzione e quindi ottieni num_rows dall'istruzione o chiama get_result() e leggi il valore di num_rows sul set di risultati restituito.