«

php mysql 根据经纬度计算距离并排序

时间:2024-4-30 10:48     作者:杨佳乐     分类: PHP


$lat=39.950273;
$lng=116.550167;

$sql="
        SELECT
            *,
            ROUND(
                6378.138 * 2 * ASIN(
                    SQRT(
                        POW(
                            SIN(
                                (
                                    {$lat} * PI() / 180 - lat * PI() / 180
                                ) / 2
                            ),
                            2
                        ) + COS({$lat} * PI() / 180) * COS(lat * PI() / 180) * POW(
                            SIN(
                                (
                                    {$lng} * PI() / 180 - lng * PI() / 180
                                ) / 2
                            ),
                            2
                        )
                    )
                ) * 1000
            ) AS juli
        FROM
            ".tablename('tablename表名')."
        ORDER BY
            juli ASC
    ";

    $list=pdo_fetchall($sql);