Проблема в идиотских руководствах из прошлого века.
Ну и в том, что вы не понимаете даже их. И воображаете, будто $_GET['q'] - это некая волшебная переменная, которая содержит "URI".
Но содержит она его только если использовать .htaccess, причем с идиотской инструкцией, которая отправляет в РНР те данные, которые в нем и так есть.
В современном же мире наличие как файлика .htaccess, так и идиотских инструкций в нём, совсем не гарантировано.
И получать запрошенный URI надо нормальным способом, о котором написал AUser0 - через специально предназначенную для этого переменную.
if($conn->connect_error) {
die("Ошибка соединения: " . $conn->connect_error);
}
- это еще один пример бессмысленного говнокода из прошлого века.
Ну и роутинг на вложенных свитчах вместо нормального - это совсем за гранью добра и зла.