Эхо POST в строку SQL

У меня есть строка sql, которую я хочу вывести из формы в строку, чтобы удалить таблицу. В настоящее время я использую следующую строку

$sql4 = "DROP TABLE gs.gs_object_data_<? echo $rows['$imei']; ?>";

Это не повторение IMEI, который я извлек из $_POST на предыдущей странице.

Я также пробовал следующие строки безрезультатно.

$sql4 = "DROP TABLE gs.gs_object_data_'%$imei%'";

$sql4 = "DROP TABLE gs.gs_object_data_'".$imei."'";

gs_object_data - константа во всех таблицах, отличается только imei

Мне нужен результат как таковой gs_object_data_111111 imei на предыдущей странице будет 111111

Любые предложения будут оценены.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
69
3

Ответы 3

Это будет работать:

$sql4 = "DROP TABLE gs.gs_object_data_{$rows['imei']};";

Я получаю следующую ошибку. Неизвестная таблица 'gs.gs_object_data_' по-прежнему не вводит номер imei

Trevor Ackermann 20.01.2019 09:21

В моем ответе была ошибка, и я ее исправил. Это должно быть «imei», а не «$ imei». Если это не сработает, не могли бы вы опубликовать код, в котором выполняется подключение к базе данных, чтобы его было легче отлаживать?

Madhusanka Goonathilake 20.01.2019 09:32

Я обнаружил, что теперь это работает $sql4 = "DROP TABLE gs.gs_object_data_$imei"; Он также удаляет запрошенную таблицу

Trevor Ackermann 20.01.2019 09:39

Похоже, вы хотите использовать переменную запроса POST - так ли это? Вы можете обнаружить, что sprintf полезен при создании таких строк — вы указываете заполнители в простой строке, а затем назначаете им переменную позже ~ в целом избавляет от проблем с экранированием кавычек.

Следующие тесты показывают, что переменная POST imei доступна, и создает sql, если она есть, иначе устанавливает переменную $sql как false (false можно использовать в логических тестах позже)

$sql = !empty( $_POST['imei'] ) ? sprintf( 'drop table `gs`.`gs_object_data_%s`;', $_POST['imei'] ) : false;
if ( $sql ){
    /* do something with sql */
}

Я обнаружил, что следующий код работает

$sql4 = "DROP TABLE gs.gs_object_data_$imei";

imei уже установлен как переменная в POST с предыдущей страницы

Это кажется довольно уязвимым для SQL-инъекций. Сначала вы должны внести в белый список допустимые значения $imei, если вы еще этого не сделали.

Jeto 20.01.2019 10:13

Другие вопросы по теме