Funkcja mysqli_connect() służy do nawiązania połączenia z serwerem MySQL przy użyciu rozszerzenia MySQLi. Jej wynik jest kluczowy dla dalszej pracy aplikacji:
- gdy połączenie się powiedzie, zwracany jest obiekt mysqli (wartość "truthy" w PHP),
- gdy połączenie się nie powiedzie, zwracane jest FALSE (wartość "falsy").
Dlatego warunek "if (!$conn) { /* obsługa błędu */ }" jest poprawny: operator ! zadziała wtedy, gdy $conn nie zawiera prawidłowego obiektu połączenia, czyli w praktyce gdy połączenie się nie udało i zwrócono FALSE.
Odpowiedź "if (mysqli_connect_errno())" oraz "if (mysqli_connect_error())" mogą być użyteczne diagnostycznie, bo odnoszą się do kodu i opisu ostatniego błędu połączenia. Jednak nie sprawdzają one bezpośrednio, czy zmienna $conn zawiera prawidłowy obiekt połączenia. To inne kryterium: badają stan błędu raportowany przez MySQLi, a nie typ/wartość zmiennej połączenia.
Opcja "if ($conn == null)" jest problematyczna, bo po nieudanym połączeniu $conn ma wartość FALSE, a nie NULL. Dodatkowo użyto porównania luźnego ==, które może prowadzić do nieintuicyjnych wyników przez konwersję typów. W kodzie produkcyjnym, gdy naprawdę trzeba porównywać do NULL, zwykle stosuje się porównanie ścisłe === i jasno określa, skąd może się wziąć NULL.
W praktyce najprostszy i czytelny wzorzec to: najpierw sprawdzić wynik $conn (np. !$conn), a następnie – jeśli jest błąd – ewentualnie pobrać szczegóły przez funkcje błędu i zalogować komunikat. Dzięki temu warunek jest zgodny z tym, co faktycznie trzymamy w zmiennej połączenia.