Te wiersze z dokumentacji na php.net są kluczowe:
https://www.php.net/manual/en /mysqli-result.fetch-array.php
W przypadkach, gdy dwie lub więcej kolumn ma tę samą nazwę, jedynym sposobem odniesienia się do pierwszych wystąpień tej kolumny jest indeks liczbowy. W takich przypadkach potrzebujesz mysqli_fetch_row lub mysqli_fetch_array z MYSQLI_BOTH lub MYSQLI_NUM jako drugi argument (w użyciu proceduralnym).
mysqli_fetch_assoc($result) to tylko skrót dla mysqli_fetch_array($result, MYSQLI_ASSOC) .
mysqli_fetch_object robi to, czego oczekujesz:zwraca wiersz wyników jako obiekt. Użyj tego przez mysqli_fetch_assoc jest kwestią tego, czy obiekt, czy tablica lepiej reprezentuje obsługiwany rekord. Obiekt może być dowolnej klasy — domyślna jest stdClass.