Таблица у вас удаляется не во время запроса EXECUTE, а уже в строке SET.
Когда подготовленный запрос выполняется из клиента, то в MySQL передаётся не строка в кавычках, а бинарный блок, содержащий тип, длину и значение, подставляемые в плейсхолдер. таким образом прочитав байты, содержащие тип (строка) и длину (36 байт) сервер просто интерпретирует следующие 36 байт как строку главная'; DROP TABLE child;--
. Сам запрос к этому времени уже скомпилирован и превращён в последовательность команд, переменные подставляются без анализа их содержимого, так что этот DROP сервер просто не воспримет как команду.