gpt4 book ai didi

sqlite - 有没有办法查看将参数应用于 sqlite 中的查询的结果?

转载 作者:数据小太阳 更新时间:2023-10-29 03:08:28 26 4
gpt4 key购买 nike

我在 Go 中使用 sqlite3,出于调试目的,我想查看将参数应用于带有替换的查询的结果,即使用 ?替换为实际参数。这可能吗?

目前,我有如下代码,打印的 FTS5 查询看起来没问题:

SELECT ownerid FROM __ftsindex WHERE ownertable=? AND 
__ftsindex MATCH ? AND ( __ftsindex MATCH ? ) LIMIT ?;

它没有返回错误,但它也没有找到它应该找到的东西,我不知道如何进一步调试它:

for i := range trails {
if i == 0 {
s += `( __ftsindex MATCH ?`
} else {
s += ` OR __ftsindex MATCH ?`
}
}
s += " )"
query = fmt.Sprintf(`SELECT ownerid FROM __ftsindex WHERE ownertable=? AND __ftsindex MATCH ? AND %s LIMIT ?;`, s)
fmt.Println(query)
args := make([]interface{}, len(trails)+3)
args[0] = cat.Table()
args[1] = searchTerm
for i := range trails {
args[i+2] = trails[i]
}
args[len(args)-1] = limit
rows, err := model.DB.Base().Query(query, args...)

最佳答案

如果您没有从 SQL 查询中获得预期的结果,则您的输入参数中可能存在恶意字节。

我建议使用 %+q 记录每个参数:

for i, arg := range sqlArgs {
if _, ok := arg.(string); ok {
log.Printf("arg %d) %+q\n", i+1, arg) // catches any 'invisible' bytes or visually similar characters
} else {
log.Printf("arg %d) `%v`\n", i+1, arg)
}
}

例如:https://play.golang.org/p/mDsnIjMAVwP

附言看到这个优秀go blog post关于如何呈现晦涩的字符串编码和字节 slice 。

关于sqlite - 有没有办法查看将参数应用于 sqlite 中的查询的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56900480/

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