我正在尝试对不受信任的用户输入执行SQLite FTS查询。我不想让用户访问查询语法,也就是说他们将无法执行像
SQLite内部似乎没有为此构建任何内容,因此我可能最终会自己构建转义函数,但这似乎很危险并且容易出错。有没有更好的方法来做到这一点?
foo OR bar AND cats
这样的匹配查询。如果他们尝试使用该字符串进行查询,我希望将其解释为更像foo \OR bar \AND cats
的内容。SQLite内部似乎没有为此构建任何内容,因此我可能最终会自己构建转义函数,但这似乎很危险并且容易出错。有没有更好的方法来做到这一点?
MATCH ? || '*'
这样的操作会更好吗? - Markfts_escape
函数,它可以处理连字符单词:" ".join(f'"{x}"' for x in query.replace("-", " ").split(" "))
。 - Polor Beer