Bem, em seu primeiro arquivo você declarou um
global
variável global $conn;
Eu não sei exatamente por que, mas de qualquer maneira isso funcionaria sem nenhum problema porque $ conn está no escopo global. Mas no seu segundo caso, quando você declara seu
global
variável dentro de uma função, a função procuraria por $conn
que está no escopo global em vez da variável local $conn
que aparentemente tem o identificador de conexão. remova o
global $conn
da sua função e deve funcionar. mais informações sobre escopos de variáveis - http://php.net/manual/en /language.variables.scope.php