gpt4 book ai didi

php - MySQL 在参数之间选择查询多个,变量不工作 PHP

转载 作者:行者123 更新时间:2023-11-29 14:20:42 24 4
gpt4 key购买 nike

我正在开发一个应用程序,对于给定位置(坐标纬度/经度对),它显示位于给定起始位置给定半径内的所有实体(从数据库中提取)。

我已经测试过,我用来查找最近位置的逻辑效果很好。但是,在我与 MySQL 表通信的 PHP 脚本中,我遇到了问题。

这是我正在尝试的查询,它没有从表中给出任何结果:

$sql = "SELECT * FROM merchants WHERE latitude BETWEEN '$lat1' AND '$lat2' AND longitude BETWEEN '$lon1' AND -90.2745 AND category='$merchCategory'";           

但是,通过回显 $lat1、$lat2、$lon1 和 $lon2,我知道它们包含有效值(应该从查询中生成结果(仅供引用:这 4 个变量表示从给定位置开始的半径平方) ;纬度经度是表中的列。)

$lon1= -90.644843447 $lon2= -90.274500553 $lat1= 38.3496784638 $lat2= 38.6395335362

但是,这有效(只是在值中进行硬编码,而不是通过 $lon2 变量引用它:

$sql = "SELECT * FROM cashbackengine_merchants WHERE latitude BETWEEN '$lat1' AND '$lat2' AND longitude BETWEEN '$lon1' AND **-90.2745** AND category='$merchCategory'";            

就像这样:

$sql = "SELECT * FROM cashbackengine_merchants WHERE latitude BETWEEN '$lat1' AND '$lat2' AND longitude BETWEEN **-90.64484** AND '$lon2' AND category='$merchCategory'";           

但纬度完全没有问题。我强烈地感觉到这与语法有关,而且可能是非常简单的事情。非常感谢任何帮助!

最佳答案

试试这个

$sql = "SELECT * FROM merchants WHERE latitude BETWEEN '$lat1' AND '$lat2' AND longitude BETWEEN $lon1 AND $lon2 AND category='$merchCategory'";

我不确定,但我认为这是因为 BETWEEN 需要两个数字来表示您的情况,并且您将其作为字符串 '$lon' 传递。当您对一个值进行硬编码时,另一个值会自动转换为数字值。

旁注:查看准备好的语句(最好)或转义字符串,因为如果用户输入纬度/经度值,这会导致 SQL 注入(inject)。

关于php - MySQL 在参数之间选择查询多个,变量不工作 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11806059/

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