Vývoj webových aplikací v PHP často zahrnuje práci s databázemi, kde jednou z běžných úloh je získávání dat z databáze pomocí MySQLi rozšíření. Během tohoto procesu se můžete setkat s varováním: "Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given". Tento článek poskytuje podrobný návod, jak identifikovat a opravit příčinu tohoto varování.
Analýza problému
Varování "Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given" naznačuje, že funkce mysqli_num_rows()
byla zavolána s parametrem, který není platným mysqli_result
objektem, ale hodnotou typu boolean. To se obvykle stane, když dotaz SQL selže a funkce jako mysqli_query()
vrátí FALSE
namísto objektu mysqli_result
.
Krok 1: Zkontrolování SQL dotazu
Prvním krokem je zkontrolovat správnost SQL dotazu. Ujistěte se, že syntaxe dotazu je správná a že všechny odkazované tabulky a sloupce existují v databázi.
$query = "SELECT * FROM tabulka WHERE podminka = 'hodnota'";
$result = mysqli_query($connection, $query);
Krok 2: Ošetření chyb při provádění dotazu
Je důležité ošetřit možné chyby, které mohou při provádění dotazu nastat. Pokud mysqli_query()
vrátí FALSE
, měli byste zjistit příčinu selhání dotazu.
if (!$result) {
die("SQL dotaz selhal: " . mysqli_error($connection));
}
Krok 3: Správné použití funkce mysqli_num_rows()
Po ověření, že $result
je platný mysqli_result
objekt, můžete bezpečně použít mysqli_num_rows()
k získání počtu řádků výsledku.
if (mysqli_num_rows($result) > 0) {
// Zpracování výsledků
} else {
echo "Nenalezeny žádné záznamy.";
}
Prevence problémů v budoucnosti
- Validace SQL dotazů: Vždy pečlivě ověřte syntaxi a logiku vašich SQL dotazů.
- Ošetření chyb: Implementujte robustní ošetření chyb pro všechny databázové operace.
- Testování a ladění: Použijte nástroje pro ladění a logování k identifikaci a opravě chyb v kódu.
Oprava varování "Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given" se svádí na zajištění, že předáváte platný mysqli_result
objekt funkci mysqli_num_rows()
a na správné ošetření chyb při práci s databázemi. Tímto způsobem zajistíte, že vaše aplikace bude robustnější a odolnější vůči chybám.