Košík je prázdný

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.