if (!empty($this->lat) && !empty($this->lng) && !empty($this->near_distance))
{
CircleDistance::getInstance($query, $this->lng, $this->lat, $this->near_distance);
}
elseif (!empty($this->lat) || !empty($this->lng))
{
$query->andFilterWhere(['lat' => empty($this->lat) ? null : (double)$this->lat, 'lng' => empty($this->lng) ? null : (double)$this->lng]);
}
通過后臺debug除錯看的是執行陳述句是:
SELECT * FROM `s_hotel` WHERE (`lat`=26.411867) AND (`lng`=108.831512) ORDER BY `hotel_id` LIMIT 20;
但是回傳空資料,直接將這個陳述句放在MySQL命令列執行是有資料的。
同樣的我多加一個引數后debug的查詢陳述句是:
SELECT * FROM `s_hotel` WHERE (((`lat` >= 26.411417348937) AND (`lat` <= 26.412316651063)) AND (`lng` >= 108.83100994417)) AND (`lng` <= 108.83201405583) ORDER BY `hotel_id` LIMIT 20;
這時回傳結果有資料,同樣將這條陳述句拿到命令列執行也是有資料的。
求教,問題可能出現在哪里呢?
uj5u.com熱心網友回復:
兩個環境對 = >=的處理不一樣。SELECT * FROM s_hotel WHERE (lat like "26.411867") AND (lng like "108.831512") ORDER BY hotel_id LIMIT 20
uj5u.com熱心網友回復:
感覺這個層級不太對啊SELECT * FROM s_hotel WHERE
(
(
(lat >= 26.411417348937)
AND
(lat <= 26.412316651063)
)
AND
(lng >= 108.83100994417)
)
AND
(lng <= 108.83201405583)
ORDER BY hotel_id
LIMIT 20
uj5u.com熱心網友回復:
樓主解決沒有轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/234437.html
標籤:其他技術討論專區
