格式化MySQL MATCH查询的字符串

时间:2016-01-31 05:27:42

标签: mysql sql search go

我正在尝试从用户输入构建MySQL全文搜索查询,但我很困惑如何最好地格式化它以插入sql模块创建的预准备语句。基本上现在我正在使用这个术语,将它分成空格,然后创建一个带有单词的切片。然后我用前面的+格式化切片部分。所以现在输入看起来像“+ my + cool + search”

一个小片段示例

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, " "))

问题是它似乎没有像我期望的那样转义字符,因为IN BOOLEAN MODE具有某些特殊的运算符,如+, - ,>,<符号。如果用户插入任何这些字符,则会影响搜索。我已经读过你需要用双引号括起术语,但这是否意味着sql驱动程序在插入参数时没有这样做?这是什么'?'是模棱两可的正在被取代,我想。

我还没有找到很多关于如何在互联网上动态构建这些类型的查询的例子,所以也许这是一个更好的方法来做到这一点?谢谢!

0 个答案:

没有答案