簡體   English   中英

MySQL選擇參數之間的多個查詢,變量不起作用

[英]MySQL Select Query Multiple Between Arguments, Variable not Working PHP

我正在開發一個針對給定位置(經緯度/經度對)的應用程序,它顯示從給定起始位置到給定半徑內的所有實體(從數據庫中拉出)。

我已經測試過,並且我用來查找最近位置的邏輯也很好。 但是,在我的與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注入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM