Welnu, in uw eerste bestand heeft u een global . gedeclareerd variabele global $conn; Ik weet niet precies waarom, maar hoe dan ook, dat zou zonder enig probleem werken, omdat $conn een wereldwijd bereik heeft.
Maar in uw tweede geval, wanneer u uw global . aangeeft variabele binnen een functie, zou de functie zoeken naar $conn die in globale scope is in plaats van de lokale variabele $conn die blijkbaar de verbindingshendel heeft.
verwijder de global $conn van uw functie en het zou moeten werken.
meer informatie over variabele scopes - https://php.net/manual/en /taal.variabelen.scope.php