Что вы хотите сделать это:
$sql = "SELECT txt FROM $link WHERE id = 1";
^ ^ ^
двойные кавычки ("
) указать, что строка должна интерпретироваться (с одинарные кавычки это не сработает). Внутри строки вы можете написать имя переменной ($link
), и она будет «вытеснена» ее значением.
Я бы не рекомендовал этого, потому что он уязвим для SQL-инъекций, и это очень плохая практика, которая показывает, что вы делаете что-то необычным образом. Лучше избегайте этого!
EDIT: еще хуже ...
Когда вы говорите, в комментарии создает таблицу MySQL с именем файла, что это еще хуже, что нужно сделать. Во-первых, не все символы в имени файла должны войти в имя таблицы. Во-вторых, вы можете получить litearlly что-нибудь как имя файла, даже вещи, которые не являются фактическими именами файлов.
Можно горна запрос как HTTP- так, что имя файла является произвольная строка своему вкусу, например:
a(); SELECT * FROM accounts; --
Когда вы кладете эту строку в запросе:
CREATE TABLE $filename (id int PRIMARY KEY, whatever varchar(20) NOT NULL);
Вы получаете это в результате SQL-запрос:
CREATE TABLE a(); SELECT * FROM accounts; -- (id int PRIMARY KEY, whatever varchar(20) NOT NULL);
Как вы можете видеть, это приведет к созданию таблицы a
без каких-либо столбцов, а затем выберите все имена пользователей и пароли, если существует таблица accounts
. Остальная часть запроса закомментирована с --
.
Это очень простая инъекция SQL-инъекций, и вы не хотите этого делать! Не ставьте userinput прямо в ваши SQL-запросы!
EDIT: принимать значение от $_POST
Если поле имеет имя link
, то вы можете получить доступ к его
$_POST['link']
Вы можете поместить это в свою строку следующим образом:
$sql = "SELECT txt FROM {$_POST['link']} WHERE id = 1";
'Я создаю файл php на лету' вы могли бы прояснить это? Обычно, когда вам нужно создавать файлы/папки, подобные этому, есть лучший способ сделать что-то. – JimL
Ну, у меня есть форма, где я помещаю имя файла. После отправки в php-действие он создает таблицу mysql с именем файла, а также новый php-файл с текстовым редактором tinymce, который имеет запрос на поиск текста из таблицы базы данных, созданной после отправки. Я пытался использовать $ _SESSION для имени таблицы, но когда я закрываю браузер, потеряет $ _SESSION и редактор tinymce потерял фокус на таблице базы данных. Мне нужно добавить во вновь созданный файл имя таблицы, в которой он будет извлекать данные. –
Я бы рекомендовал использовать другое решение. Тот, который вы предлагаете, бесцельно сложный, небезопасный и трудноустойчивый. –