mysql – 使用between子句的Codeigniter数据库错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 使用between子句的Codeigniter数据库错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1582字,纯文字阅读大概需要3分钟。
内容图文
![mysql – 使用between子句的Codeigniter数据库错误](/upload/InfoBanner/zyjiaocheng/892/e28662eb4ad8464685b40d85907dae3a.jpg)
我从codeigniter获取数据库语法错误并生成此sql查询.
SELECT `code`, `latitude`, `longitude` FROM (`postcodes`) WHERE `latitude` `BETWEEN 55`.`8616 AND 56`.`1508` AND `longitude` `BETWEEN '-3`.`9507' AND '-3`.`6131'` AND `code` LIKE 'FK%'
我想我可以看到问题在于它们不应该在经度和纬度上加上它们.
生成此查询的代码是:
function get_zips_in_range($zip, $range, $sort=1, $include_base=true)
{
//get base postcode details
$details = $this->get_zip_point($zip);
if( ! $details)
{
return false;
}
//get the first 2 letters of the postcode
$str = substr($zip, 0, 2);
//find max - min lat / long for radius and zero point and query
//only zips in that range.
$lat_range = $range/69.172;
$lon_range = abs($range/(cos($details->latitude) * 69.172));
$min_lat = number_format($details->latitude - $lat_range, "4", ".", "");
$max_lat = number_format($details->latitude + $lat_range, "4", ".", "");
$min_lon = number_format($details->longitude - $lon_range, "4", ".", "");
$max_lon = number_format($details->longitude + $lon_range, "4", ".", "");
//build the sql query
$this->CI->db->select("code, latitude, longitude");
if( !$include_base)
{
$this->CI->db->where("code <>", $zip);
}
$this->CI->db->where("latitude BETWEEN '$min_lat' AND '$max_lat'");
$this->CI->db->where("longitude BETWEEN '$min_lon' AND '$max_lon'");
$this->CI->db->like('code', $str, 'after');
$result = $this->CI->db->get("postcodes");
if($result->num_rows() < 1)
{
$this->set_last_error("SQL error in get_zips_in_range");
return false;
}
解决方法:
CI 2.1.1 https://github.com/EllisLab/CodeIgniter/issues/1469中存在错误
在2.1.2出现之前,恢复到2.1.0是最佳解决方案
内容总结
以上是互联网集市为您收集整理的mysql – 使用between子句的Codeigniter数据库错误全部内容,希望文章能够帮你解决mysql – 使用between子句的Codeigniter数据库错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。