а вот mysqli_connect это переходная функция, созданная для говнокодеров, все еще не переведших свой сайт на PDO или для людей которые не могут это сделать по вине заказчика.
$db в данном случае не синглетон, так как синглетон должен обеспечить одну точку входа и один объект, а у вас
1. Вообще не объект и даже не ооп, из этого выплывает
1.1. Точка входа как таковая отсутствует, вы сначала создаете переменную и и дальше используете ее... как переменную.
1.2. Ваша переменная не защищена от изменений и может быть перезаписана в любой момент времени
1.3. Для доступа к переменной из любой точки кода, ее приодеться вывести в глобальную область видимости, в синглетоне это решается на уровне видимости классов
Будь это синглетон, внутри вашей переменной была бы зашита хитрая функция, создающая коннект при первом обращении к ней, а в последствии возвращающего егоже, также там можно было следить переключения на резервные бд и много чего еще. У вас коннект создается всегда, в фиксированном месте и даже если он ненужен - все равно создается.
И все это внутри самой переменной, что ведет нас к тому, что это должно быть сделано на ооп, так как такого функционала, для отслеживания первого обращения к переменной, в пхп просто нет.