плейсхолдерами могут быть только значения полей, но не имена полей/таблиц/etc.
то есть ваш запрос все равно не выполнится, даже с правильным экранированием.
имена полей принято заключать в обратные кавычки для избежания конфликтов c ключевыми словами самого SQL.
подефолту никто не светит базу наружу.
но любой вменяемый хостер даёт возможность её засветить.
если у вас есть постоянный внешний адрес (или непостоянный, но который меняется не часто), это элементарно решается настройками, и не нужно мудрить с туннелями. менее удобно, но в плюсах - возможность пользовать любой софт, включая консоль.
общий ответ - никак: вывод не имеет ничего общего с удалением.
но если в целом ответить на вопрос: каждой записи в выводе добавляется ссылка/кнопка с уникальным для этой записи параметром. и при клике на эту ссылку/кнопку с этим уникальным параметром, сервер получает этот уникальный параметр, в идеале (что не всегда бывает) проверяет есть ли необходимые права, вызывает запрос вида delete from tableName where someParam = someValue
вы изобретаете дикий костыль: нет необходимости в уникальном пине.
сам по себе пин - бесполезен. он используется с другими данными, которые в совокупности дадут уникальную комбинацию.
проблема не в сессии, а в логике скрипта.
1. зачем while, если вы достаете одну запись?
2. если данные не получены, нужно показывать ошибку и прекращать выполнение или, хотя бы, обнулить ране сохраненные в сессии данные. вы же продолжаете заполнять шаблон старыми данными из сессии.
на phpmyadmin ничего не лежит, это банальный mysql-клиент.
делаете дамп базы (хоть при помощи phpmyadmin, хоть любым другим клиентом) и импортируете его у себя на компе.
после изменения делаете то же самое в обратном порядке.