Sergeysemenovich, к ней привело то, что там null. Почему там null вместо HTML-элемента - вот это хороший вопрос, но без кода на него ответить не получится.
secret secretom, будет конечно. Но PDO не поддерживает плейсхолдеры для имен таблиц)
Если в самом деле нужно передавать таблицу параметром, и очень хочется сделать проверку, можно сделать SHOW TABLES FROM dbName и потом проверить через in_array(). Но вы делаете что-то странное, имхо.
Encoders, первый пункт в современных браузерах ничем не заменишь.
ajax (xhr) можно заменить на fetch, но сути это не меняет. Вообще можно выбросить первые два пункта, и сделать просто форму, но тогда будет не "при нажатии на чекбокс" а "при отправке формы", что заметно отличается в плане юзабилити.
Обновить данные в БД тоже придется, я намеренно не вдавался в подробности (как именно) потому что без понятия что у вас на сервере установлено и какие есть скиллы.
Я не знаю чему учат "у вас" но оно есть в большинстве учебников (1, 2).
И да, я тоже склонен считать себя довольно слабым фуллстеком. Но веб-разработке лет пятнадцать, успел запомнить пару приемчиков и немножко книжек прочел.