Chyba "Fatal error: Uncaught Error: Call to a member function fetch_assoc() on boolean" je jednou z nejčastějších chyb, na které mohou narazit vývojáři při práci s PHP a MySQL databázemi. Tento článek se zaměří na příčiny této chyby a poskytne konkrétní řešení a osvědčené postupy, jak se jí vyhnout.
Příčina chyby
Tato chyba se objevuje, když vývojář pokusí volat metodu fetch_assoc()
na boolean hodnotu místo na očekávaný objekt výsledku dotazu. V PHP se to obvykle stává, pokud dotaz na databázi selže nebo vrátí false, což naznačuje chybu v dotazu nebo problém s připojením k databázi.
Zjištění a oprava chybného dotazu
Prvním krokem k vyřešení tohoto problému je zjistit, proč dotaz selhal. Toho lze dosáhnout kontrolou dotazu před jeho spuštěním a použitím funkcí jako mysqli_error()
pro získání popisu chyby z databáze.
Příklad:
$result = $mysqli->query("SELECT * FROM neexistujici_tabulka");
if (!$result) {
die("Chyba dotazu: " . $mysqli->error);
}
Ošetření chybných dotazů
Po zjištění a opravě chyby v dotazu je důležité implementovat ošetření chyb do vašeho kódu, aby se podobné problémy lépe zvládaly a nezpůsobovaly fatální chyby.
Příklad ošetření:
$result = $mysqli->query("SELECT * FROM tabulka");
if ($result === FALSE) {
// Zpracování chyby
} else {
while ($row = $result->fetch_assoc()) {
// Zpracování řádků
}
}
Osvědčené postupy
- Využití objektově orientovaného přístupu: Práce s databází pomocí objektově orientovaného přístupu a použití vyjímek pro ošetření chyb může zvýšit čitelnost a údržbu kódu.
- Příprava dotazů: Používání připravených dotazů (prepared statements) nejenže zvyšuje bezpečnost vaší aplikace tím, že brání SQL injekcím, ale také může zlepšit zpracování chyb.
- Logování chyb: Zaznamenávání chyb do logu může usnadnit diagnostiku problémů tím, že poskytuje kontext, kdy a kde k chybám došlo.
Chyba "Fatal error: Uncaught Error: Call to a member function fetch_assoc() on boolean" v PHP signalizuje problém s dotazem na databázi. Efektivní způsob, jak se této chybě vyhnout, zahrnuje pečlivou kontrolu a testování SQL dotazů, ošetření možných chyb v kódu a dodržování osvědčených postupů pro práci s databází. Implementací těchto kroků můžete zvýšit stabilitu a bezpečnost vaší aplikace.