计算距离时如何通过位置参数传递



我想从我的go应用程序中执行以下查询

SELECT hour, count 
FROM location_counts 
WHERE distance(point, 'POINT(-80.205 26.14)') <= 100

我将传递POINT(-80.205 26.14)100值,我不确定如何以安全的方式包含POINT...参数。当我尝试将其传递给以下参数时:

rows, err := g.DB.Query(
    "select hour, count from location_counts where distance(point, '?') <= ?",
    "POINT(-80.205 26.14)",
    100,
)

它引发错误:

sqlactionException [sqlparseexception:不能施放'点(-80.205) 26.14)'键入double]

如果我将值直接放入字符串中,但我会为SQL注入漏洞开放。

我如何在查询中安全地包含 POINT...值?

删除占位符问号的周围行情应该修复它,例如:

rows, err := g.DB.Query( "select hour, count from location_counts where distance(point, ?) <= ?", "POINT(-80.205 26.14)", 100, )

永远不要引用占位符,因为他们将直接被键入参数替换。

相关内容

  • 没有找到相关文章

最新更新