Cóż, w swoim pierwszym pliku zadeklarowałeś global zmienna global $conn; Nie wiem dokładnie dlaczego, ale i tak działałoby to bez problemu, ponieważ $conn ma zasięg globalny.
Ale w drugim przypadku, kiedy deklarujesz swój global zmienna wewnątrz funkcji, funkcja wyszuka $conn która jest w zasięgu globalnym zamiast lokalnej zmiennej $conn który najwyraźniej ma uchwyt połączenia.
usuń global $conn z Twojej funkcji i powinno działać.
więcej informacji na temat zakresów zmiennych - https://php.net/manual/en /język.zmienne.scope.php