Насколько я знаю, вы можете связать только с параметром, а не с любой частью запроса, который вы хотите.По сути, вы говорите базе данных: «Эй, я собираюсь передать вам значение здесь, и я хочу, чтобы вы использовали свою магию, чтобы убедиться, что она не выходит за пределы».Такие вещи, как имена таблиц или имен полей, не являются значениями, они являются частью самой структуры таблицы.
В этом случае вам просто нужно использовать простое $query = "DROP TABLE " . $table;
.Должно быть достаточно легко проверить список известных таблиц, чтобы убедиться, что вы не вводите ничего вредного.Насколько я понимаю, все, что вносит изменения в DDL, не должно принимать от пользователя.Эти виды изменений могут быть на основе на основе пользовательского ввода, но фактическая конструкция запроса должна быть действительно хорошо известна и не должна требовать внешних данных для построения.
Кроме того, яне совсем уверен, что вы пытаетесь сделать с этим запросом:
DROP TABLE (SELECT MAX(name) from profiles where name='testing');
Похоже, вы пытаетесь удалить запись, но это совершенно неверный синтаксис для этого.Если вы пытаетесь удалить таблицу, имя которой получено в результате другого запроса, я действительно не думаю, что вы тоже можете это сделать.Я на 99% уверен, что DROP TABLE
ожидает только буквальное значение имени таблицы.