2011-04-20 61 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... 
}