使用codeigniter表单帮助程序进行查询

时间:2011-04-20 00:33:06

标签: php mysql database codeigniter

我正在使用Google Maps API和MYSQL进行半径搜索(http://spinczyk.net/blog/2009/10/04/radius-search-with-google-maps-and-mysql/)< / p>

是否可以使用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`

我不确定如何使用表单助手添加所有内容。

3 个答案:

答案 0 :(得分: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...
}

答案 1 :(得分:3)

无法按原样使用数据库类创建该查询。

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

或者您可以自己扩展数据库类以包含数学函数。

答案 2 :(得分:0)

出于可重复使用的原因,我更喜欢为此创建帮助:

https://gist.github.com/lefakir/e84c22996b1e77436f955c5a7df4d671

然后在其他助手中使用它:

$ci = get_database_connected_ci();
$query = $ci->db->query($sql);