2011-04-20 63 views
2

我正在使用Google Maps API和MYSQL進行半徑搜索(http://spinczyk.net/blog/2009/10/04/radius-search-with-google-maps-and -mysql /)使用codeigniter窗體幫助查詢

可以使用CI表單助手函數進行以下查詢嗎?

SELECT 
`id`, 
`name`, 
ACOS(SIN(RADIANS(`latitude`)) * SIN(RADIANS($fLat)) + COS(RADIANS(`latitude`)) 
* COS(RADIANS($fLat)) * COS(RADIANS(`longitude`) - RADIANS($fLon))) * 6380 AS `distance` 
FROM `stations` 
WHERE 
ACOS(SIN(RADIANS(`latitude`)) * SIN(RADIANS($fLat)) + COS(RADIANS(`latitude`)) 
* COS(RADIANS($fLat)) * COS(RADIANS(`longitude`) - RADIANS($fLon))) * 6380 < 10 
ORDER BY `distance` 

我不知道如何添加所有使用表單助手。

+2

表單助手用於製作HTML表單。它不會幫你在這裏。 – icchanobot 2011-04-20 01:46:22

回答

3

沒有辦法像原樣那樣用數據庫類創建該查詢。

您可以使用:
$this->db->query()
http://codeigniter.com/user_guide/database/queries.html

或者你也可以自己擴展數據庫類包括數學函數。

+0

但是你不能在助手函數中使用$ this。您必須使用:$ ci =&get_instance(); $ CI->負載>數據庫(); $ CI-> DB->查詢($ your_sql_query); – mdikici 2014-12-25 08:31:51

7

如果您想在助手中使用數據庫,您需要訪問CI超級對象。 在你的函數:

 
$ci =& get_instance(); 
$ci->load->database(); 
$sql = "YOUR SQL QUERY GOES HERE"; 
$q = $ci->db->query($sql); 
if($q->num_rows() > 0) 
{ 
    //Process your query here... 
}