gpt4 book ai didi

sqlite - 如何为 SQLite FTS 查询转义字符串

转载 作者:行者123 更新时间:2023-12-03 17:53:12 31 4
gpt4 key购买 nike

我正在尝试使用不受信任的用户输入执行 SQLite FTS 查询。我不想让用户访问查询语法,也就是说他们将无法执行像 foo OR bar AND cats 这样的匹配查询。 .如果他们尝试使用该字符串进行查询,我想将其解释为更像 foo \OR bar \AND cats 的内容。 .

SQLite 似乎没有为此内置任何内容,因此我可能最终会构建自己的转义函数,但这似乎很危险且容易出错。有没有首选的方法来做到这一点?

最佳答案

FTS MATCH 语法是它自己的小语言。对于 FTS5,逐字字符串文字是 well defined :

Within an FTS expression a string may be specified in one of two ways:

  • By enclosing it in double quotes ("). Within a string, any embedded double quote characters may be escaped SQL-style - by adding a second double-quote character.

  • (redacted special case)


事实证明,为 FTS 查询正确转义字符串很简单,可以完全可靠地实现:替换 """并将结果括在 " 中在两端。
在我的情况下,当我将它放入准备好的语句中时,它可以完美地工作,例如 SELECT stuff FROM fts_table WHERE fts_table MATCH ? .然后我会 .bind(fts_escape(user_input))哪里 fts_escape是我上面描述的功能。

关于sqlite - 如何为 SQLite FTS 查询转义字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28971633/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com