Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

tìm kiếm vùng lân cận mã zip php / mysql

Đây là cách tốt nhất mà tôi đã tìm thấy. Tất nhiên, nó sẽ yêu cầu bạn phải mã hóa tất cả các vĩ độ / kinh độ zipcodes trong cơ sở dữ liệu.

// get all the zipcodes within the specified radius - default 20
function zipcodeRadius($lat, $lon, $radius)
{
    $radius = $radius ? $radius : 20;
    $sql = 'SELECT distinct(ZipCode) FROM zipcode  WHERE (3958*3.1415926*sqrt((Latitude-'.$lat.')*(Latitude-'.$lat.') + cos(Latitude/57.29578)*cos('.$lat.'/57.29578)*(Longitude-'.$lon.')*(Longitude-'.$lon.'))/180) <= '.$radius.';';
    $result = $this->db->query($sql);
    // get each result
    $zipcodeList = array();
    while($row = $this->db->fetch_array($result))
    {
        array_push($zipcodeList, $row['ZipCode']);
    }
    return $zipcodeList;
}

Bạn sẽ có thể chỉ cần thả vào chức năng này. Chuyển cho nó $ lat và $ lon của mã zip bạn muốn bán kính, bao gồm bán kính tùy chọn và lấy lại danh sách mã zip.

Bạn có thể rất dễ dàng sửa đổi điều này để đưa tất cả người dùng đến nơi mã zip IN (radius_sql) và lấy lại người dùng trong danh sách của bạn.

Chúc bạn viết mã vui vẻ!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHỌN * TỪ Máy chủ được liên kết MySQL sử dụng SQL Server không có OpenQuery

  2. Làm cách nào để hiển thị hàng bảng mysql dưới dạng cột

  3. Neo4j - Tạo mối quan hệ bằng Cypher

  4. Làm cách nào để chèn các tệp lớn trong MySQL db bằng PHP?

  5. Tôi có nên sử dụng kiểu dữ liệu datetime hoặc timestamp trong MySQL không?