2016-02-25 2 views
0

Я программирую онлайн-приложение LAMP stack, которое использует очень сложную форму поиска, я хочу дать пользователю возможность называть и сохранять их текущий поиск для более быстрого использования в будущем (они будут ежедневно проверяйте эти результаты). Какова наилучшая методология для этого? Я сталкивался с хранимыми процедурами, но это не похоже на то, что я ищу.Сохранение созданной пользователем формы Созданные запросы

Моя текущая идея:

Прицепные PHP генерируется запрос в выделенную базу данных для сохранения запросов (все формы ввода данных продезинфицировать/подтверждено). Это риск для безопасности? Я знаю, что все сформированные SQL-кодом - это, конечно, риск. Когда пользователь хочет запросить с ним, PHP-код будет просто использовать сохраненный запрос по форме, сгенерированной. Если в будущем я сгенерирую код сгенерированный формой кода, это должно предотвратить конфликты, но, конечно, оно не будет использовать никаких новых конструктивных особенностей.

+0

Вместо того, чтобы пытаться сохранить весь запрос, возможно, попытайтесь сохранить параметры в базе данных? Затем используйте эти параметры для построения запроса, когда вам нужно получить информацию. – Maximus2012

+0

Сохранение параметров также позволит вам создавать параметризованный запрос, а не запускать статический запрос, когда вы хотите получить информацию. – Maximus2012

+0

Одним из недостатков этого подхода было бы более сложная структура базы данных для хранения информации. – Maximus2012

ответ

4

Я не думаю, что это «лучшая практика» (или что в этом случае есть одно). Лично я думаю, что лучше хранить свои поисковые термины в формате, лишенном контекста (скажем, в JSON-закодированном объекте, если есть несколько условий или условий поиска), а затем, когда они вспоминают поиск, перестраивают запросы из объекта JSON.

(Сохранение фактического запроса, кажется рискует старые запросы устаревает, если/когда основные изменения структуры базы данных. Хранение только то, что они ищут, и восстановление это позволяет приспособить для этого.)

Мои $ 0,02.


Чтобы ответить на ваш вопрос, да. Независимо от того, как вы храните его, вы сохраните значения, которые они ввели, независимо от того, какая ваша форма собирает, а затем, когда они перезапускают сохраненный «поиск», вы пройдете эту структуру и переделаете свой запрос.

Таблица может содержать search_id, user_id, search_name, parameters и все остальное. Они вытаскивают список сохраненных поисков, выбирают один, выполняют его, вы вытаскиваете parameters, перестраиваете запрос, запускаете его и показываете результаты, точно так же, как если бы они выполняли первоначальный поиск по нормальной форме.

+0

JSON, как в JSON, хранящемся в таблице базы данных? Думаю, я понимаю, что вы говорите, в основном создайте массив, который используется для перестройки запроса? – photocode

+0

Да, вот и все. См. Мое редактирование выше. – Davis

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