我正在编写一个使用非常复杂的搜索表单的LAMP堆栈在线应用程序,我想让用户能够命名并保存他们当前的搜索以便将来更快地使用(他们将每天检查这些结果) 。这样做的最佳方法是什么?我一直在遇到存储过程,但这似乎不像我正在寻找的。 p>
我目前的想法:
将php生成的查询拉入专用数据库以保存查询(对所有表单输入数据进行清理/验证)。这是安全隐患吗?我知道所有表单生成的SQL当然都是冒险的。当用户想要用它查询时,PHP代码将简单地使用保存的查询而不是生成的表单。如果我将来更改表单生成的查询代码,这应该可以防止冲突,但当然,它不会利用任何新的设计功能。
答案 0 :(得分:4)
我不认为这是“最佳实践”(或者在这种情况下有一个)。我个人认为我宁愿将他们的搜索术语存储在没有上下文的格式中(例如,如果有多个搜索术语或条件,则在JSON编码的对象中),然后当他们回想起搜索时,重建来自JSON对象的查询。
(如果/当底层数据库结构发生变化时,存储实际查询似乎会冒旧的查询变得过时的风险。只存储他们正在搜索的内容并重建它可以让你适应它。)
我的0.02美元。
回答你的问题,是的。无论您如何存储它,您都会将它们输入的值存储在您的表单收集的任何内容中,然后当它们重新运行存储的“搜索”时,您将通过该结构重新创建查询。
该表可能包含search_id
,user_id
,search_name
,parameters
以及其他任何内容。他们提取他们保存的搜索列表,选择一个,执行它,拉parameters
,重建查询,运行它,并显示结果,就像他们通过普通表单进行原始搜索时一样