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 - http://php.net/manual/en /język.zmienne.scope.php