私は、特定の場所(座標緯度/経度のペア)について、特定の開始場所から特定の半径内にあるすべてのエンティティ(データベースから取得)を表示するアプリを開発しています。
私はテストしましたが、最も近い場所を見つけるために使用しているロジックはうまく機能します。ただし、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'";
しかし、緯度にはまったく問題はありません。これは構文と関係があり、非常に単純なものである可能性が高いと強く感じています。どんな助けでも大歓迎です!