计算距离时如何传入位置参数?
How to pass a location parameter in when calculating distance?
我想从我的 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: Cannot cast 'POINT(-80.205
26.14)' to type double]
如果我将值直接放入字符串中,它会起作用,但我会为 SQL 注入漏洞打开自己的大门。
如何在我的查询中安全地包含 POINT...
值?
删除占位符问号周围的引号应该可以修复它,例如:
rows, err := g.DB.Query(
"select hour, count from location_counts where distance(point, ?) <= ?",
"POINT(-80.205 26.14)",
100,
)
永远不要引用占位符,因为它们将被类型化参数直接替换。
我想从我的 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: Cannot cast 'POINT(-80.205 26.14)' to type double]
如果我将值直接放入字符串中,它会起作用,但我会为 SQL 注入漏洞打开自己的大门。
如何在我的查询中安全地包含 POINT...
值?
删除占位符问号周围的引号应该可以修复它,例如:
rows, err := g.DB.Query(
"select hour, count from location_counts where distance(point, ?) <= ?",
"POINT(-80.205 26.14)",
100,
)
永远不要引用占位符,因为它们将被类型化参数直接替换。