2016-10-23 2 views
0

В PHP, если у меня есть этот Присвоить:PHP файлы на лету

$link = 'Home'; 

И в другом разделе PHP мне нужно, чтобы захватить значение $ ссылку и вставить его в запросе MYSQL в виде простого текста, как это:

$sql = "SELECT txt FROM Home WHERE id = 1"; 

Обратите внимание, что $ link был записан в формате его значения в запросе. В основном мне нужно увидеть внутреннюю часть $ link var и записать его в запросе.

Зачем мне это нужно -> потому что я создаю php-файлы на лету после нажатия кнопки отправки. И внутри вновь созданного файла текстовый текстовый редактор, который должен прочитать его текстовое содержимое из таблицы, которая также была создана на лету вместе с этим файлом.

+0

'Я создаю файл php на лету' вы могли бы прояснить это? Обычно, когда вам нужно создавать файлы/папки, подобные этому, есть лучший способ сделать что-то. – JimL

+0

Ну, у меня есть форма, где я помещаю имя файла. После отправки в php-действие он создает таблицу mysql с именем файла, а также новый php-файл с текстовым редактором tinymce, который имеет запрос на поиск текста из таблицы базы данных, созданной после отправки. Я пытался использовать $ _SESSION для имени таблицы, но когда я закрываю браузер, потеряет $ _SESSION и редактор tinymce потерял фокус на таблице базы данных. Мне нужно добавить во вновь созданный файл имя таблицы, в которой он будет извлекать данные. –

+3

Я бы рекомендовал использовать другое решение. Тот, который вы предлагаете, бесцельно сложный, небезопасный и трудноустойчивый. –

ответ

0

Вы хотите что-то вроде этого:

$sql = "SELECT txt FROM ".$link." WHERE id = 1"; 
+0

Это тоже не работает. Благодарю. –

0

Что вы хотите сделать это:

$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"; 
+0

Это то, что у меня есть, и вновь созданный файл потерял ориентацию на последующие использования, потому что $ link, исходит от $ _POST формы. –

+0

Посмотрите на мое второе редактирование. – pid

+0

Большое спасибо за все советы, но в этом сценарии они не работают, может быть, если .zip мой проект (пока это маленький), и если у вас есть доброта и время, вы можете посмотреть, что я пытаюсь сделать, и, возможно, увидеть исправление для моей проблемы. –

Смежные вопросы