Вы пытаетесь получить неправильный доступ к переменной $db
, которая выглядит как global
. Добавить
global $db;
в начале вашей функции.
Сообщение об ошибке говорит вам, что prepare
вызывается для чего-то, что не является объектом. Но мы все знаем, что это объект, поскольку вы устанавливаете его один раз на какое-то значение (нет никаких шансов, что это может быть, например, строка). Это оставляет только возможность того, что не будет иметь значение, установленное внутри функции, по какой-то причине. Что приводит нас к ответу.