Il n'y a aucune raison d'utiliser num_rows
, qui non seulement prête à confusion et est facile à utiliser à mauvais escient, mais peut également entraîner des problèmes de performances en cas d'utilisation abusive.
Récupérez simplement COUNT(1)
puis récupérez une seule colonne de la première ligne de votre résultat 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 vous vouliez, pour une raison étrange, vous en tenir à num_rows
vous devrez soit appeler store_result()
sur la déclaration, puis obtenez le num_rows
à partir de l'instruction ou appelez get_result()
et lire la valeur de num_rows
sur le jeu de résultats renvoyé.