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