2016-12-24 214 views
1

我的mySQL查詢如下,看起來像我期望的那樣工作,從地理座標輸入(由$lat1$lat2表示)返回50英里範圍內的single人的計數。值lattitudelongitude來自已經在我的數據庫中的值。返回空而不是0

我現在唯一的問題是,假設沒有人符合給定的標準,我希望計數返回0.相反,我得到一個空的答覆。

SELECT 
COUNT(*) as cnt, 
(3959 * 
    acos(
     cos(radians({$lat1})) 
     * cos(radians(lattitude)) 
     * cos(radians(longitude) - radians({$lon1})) 
     + sin(radians({$lat1})) 
     * sin(radians(lattitude)) 
    ) 
) AS distance 
    FROM members WHERE status = 'single' HAVING distance < 50 

如果它是重要的,我已經通過$row = mysqli_fetch_assoc($query);獲取我的數據,其中$query是你在上面看到的代碼。

回答

1

你應該使用IFNULL

SELECT ifnull(COUNT(*), 0) as cnt, 
+0

這很奇怪。我仍然返回空白結果。 – abrahamlinkedin

+0

是的,事實證明,我的API有些奇怪。代碼有效。謝謝! – abrahamlinkedin

1

也許有在查詢一個錯誤,如果你正在使用count(*)另一個你應該給一個group by這是不缺少集合列。

+0

是的。肯定有一個錯誤。我如何重寫我的查詢以確保「0」值顯示? – abrahamlinkedin