"静态"查询始终保持不变.例如,Stackoverflow上的"标签"按钮,或Digg上的"7天"按钮.简而言之,它们始终映射到特定的数据库查询,因此您可以在设计时创建它们.
但我试图弄清楚如何进行"动态"查询,其中用户基本上规定了如何在运行时创建数据库查询.例如,在Stackoverflow上,您可以组合标记并以您选择的方式过滤帖子.这是一个动态查询,虽然是一个非常简单的查询,因为你可以组合在一起的标签世界.一个更复杂的例子是你可以组合标签和用户.
首先,当你有一个动态查询时,听起来你不能再使用替换api来避免sql注入,因为查询元素将取决于用户决定包含在查询中的内容.除了使用字符串append之外,我无法看到如何构建此查询.
其次,查询可能跨越多个表.例如,如果SO允许用户基于用户和标签进行过滤,并且这些可能存在于两个不同的表中,那么构建查询比仅添加列和WHERE子句要复杂一些.
我该如何实现这样的东西?