Vâng, trong tệp đầu tiên của bạn, bạn đã khai báo một global
biến global $conn;
Tôi không biết chính xác tại sao nhưng dù sao điều đó sẽ hoạt động mà không có vấn đề gì vì $ conn nằm trong phạm vi toàn cầu.
Nhưng trong trường hợp thứ hai khi bạn khai báo global
biến bên trong một hàm, hàm sẽ tìm kiếm $conn
thuộc phạm vi toàn cục thay vì biến cục bộ $conn
mà dường như có tay cầm kết nối.
loại bỏ global $conn
từ chức năng của bạn và nó sẽ hoạt động.
thêm thông tin về phạm vi biến - http://php.net/manual/en /language.variables.scope.php