С высокой вероятностью у тебя проблема в непонимании различий между локальными и глобальными переменными.
Если бы ты включил вывод всех варнингов, то в том месте, где у тебя используется ожидаемая переменная и ее значение пустое - будет ошибка что она не определена.
p.s. есть разные способы использовать переменные глобально, в т.ч. экзотические
* если переменная определена глобально вне функций, то чтобы получить к ней доступ внутри функции, ее нужно добавить в оператор
global внутри этой функции или предопределенный массив
$GLOBALS (не рекомендую)
* можно определить переменную как
статическую внутри класса, и получать к ней доступ везде по имени класса, типа
ClassName::$variable
* есть странный способ, хранить переменную (или просто доступ к ней) через вызов глобальной функции (или статичного метода по аналогии выше), само собой на запись примитивов потребуется заворачивать переменные в структуры. Как там внутри доступ организуется, отдельный разговор, как вариант очень смешно определить переменную внутри этой же функции как static
function db()
{
static $db=false;
if($db===false) $db=...;
return $db;
}
...
db()->execute(...);
// напоминаю что пример вырожденный, делать так именно для бд не рекомендую, хотя когда то таким пользовался