Няма причина да използвате num_rows
, което не само е объркващо, лесно за злоупотреба, но също така може да причини проблеми с производителността, ако се използва неправилно.
Просто извлечете COUNT(1)
и след това извлечете една колона от първия ред във вашия 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";
}
Ако искате по някаква странна причина да се придържате към num_rows
ще трябва или да извикате store_result()
върху израза и след това вземете num_rows
от израза или извикайте get_result()
и прочетете стойността на num_rows
върху върнатия набор от резултати.