Nie ma powodu, aby używać num_rows
, co jest nie tylko mylące i łatwe w użyciu, ale także może powodować problemy z wydajnością w przypadku niewłaściwego użycia.
Po prostu pobierz COUNT(1)
a następnie pobierz pojedynczą kolumnę z pierwszego wiersza w wyniku 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";
}
Jeśli z jakiegoś dziwnego powodu chciałeś pozostać przy num_rows
musiałbyś albo wywołać store_result()
na wyciągu, a następnie pobierz num_rows
z instrukcji lub wywołaj get_result()
i odczytaj wartość num_rows
na zwróconym zestawie wyników.