MySQL匹配查询的格式化字符串
我试图从用户输入构建一个MySQL全文搜索查询,但我不知道如何最好地格式化它,以便插入到sql模块创建的准备好的语句中。基本上现在我要用这个词,在空格上拆分,然后用单词创建一个切片。然后我用前面的+来格式化切片部分。所以现在输入看起来像“+my+cool+search” 一个小片段示例MySQL匹配查询的格式化字符串,mysql,sql,search,go,Mysql,Sql,Search,Go,我试图从用户输入构建一个MySQL全文搜索查询,但我不知道如何最好地格式化它,以便插入到sql模块创建的准备好的语句中。基本上现在我要用这个词,在空格上拆分,然后用单词创建一个切片。然后我用前面的+来格式化切片部分。所以现在输入看起来像“+my+cool+search” 一个小片段示例 terms := strings.Split(strings.TrimSpace("my cool search"), " ") var searchquery []string for _, term :=
terms := strings.Split(strings.TrimSpace("my cool search"), " ")
var searchquery []string
for _, term := range terms {
searchquery = append(searchquery, fmt.Sprintf("+%s", term))
}
dbase.Query(`SELECT blah FROM blah WHERE blah
AND MATCH(title) AGAINST (? IN BOOLEAN MODE)`, strings.Join(searchquery, " "))
问题是它似乎没有像我期望的那样转义字符,因为在布尔模式中有一些特殊的操作符,比如+,-,>,<符号。如果用户插入这些字符中的任何一个,搜索就会出错。我已经读过,您需要用双引号括起术语,但这是否意味着sql驱动程序在插入参数时没有这样做?我想用什么来代替“?”是不明确的
我也找不到很多关于如何在互联网上动态构造这些类型的查询的例子,所以总的来说,也许有一种更好的方法可以做到这一点?谢谢 我问了几乎相同的问题