mysql查询语句里如何使用PHP变量?

代码如下:

SELECT
    ROUND(
        6378.138 * 2 * ASIN(SQRT(POW(
            SIN((纬度 * PI() / 180 - substring_index(maps, ",", - 1) * PI() / 180) / 2),2) +
            COS(纬度 * PI() / 180) * COS(substring_index(maps, ",", - 1) * PI() / 180) * 
            POW(SIN((经度 * PI() / 180 - substring_index(maps, ",", 1) * PI() / 180) / 2),2))
        ) * 1000
    ) 
FROM list
ORDER BY distance asc

问题一:上面代码里的经度和纬度是获取用户当前位置的经纬度,我在外面写了个百度提供的接口通过IP地址获取经纬度,分出来两个变量一个是$lat一个是$lng,请问我该如何把这两个变量替换上面代码里的经度和纬度呢?

问题二:还有就是我通过下面代码获取用户IP

function getIP(){
        global $ip;
        if (getenv("HTTP_CLIENT_IP"))
        $ip = getenv("HTTP_CLIENT_IP");
        else if(getenv("HTTP_X_FORWARDED_FOR"))
        $ip = getenv("HTTP_X_FORWARDED_FOR");
        else if(getenv("REMOTE_ADDR"))
        $ip = getenv("REMOTE_ADDR");
        else $ip = "Unknow";
        return $ip;
    }

$content = file_get_contents("http://api.map.baidu.com/location/ip?ak=akid&ip=IP地址&coor=bd09ll");
我应该怎么把getIP()这个方法写在上面IP地址的位置呢?让它能成功解析IP地址呢?非常感谢!~

慕码人2483693
浏览 542回答 3
3回答

Cats萌萌

谢邀。 $lat 和 $lon直接替换到上面拼接字符串即可。 你的sql查询语句在php中使用,自然需要拼接sql语句,把sql当成一个字符串,拼接好之后再query即可。 另外,要看你的经纬度是什么格式,是XXX°XXX′xxx″形式还是11231.123形式,前者不支持运算,需要转后者。 其次不建议在数据库查询的时候使用计算,你上面sql中的计算完全可以在php中计算完,直接 查询计算的结果。 第四,初步感觉你的sql有问题,sql直接查询数据,而不是select field from table where xxx = xxx order ,你select的直接select了一个数据。比如 select 1 from table .. 第二个问题拿到ip之后拼接到里面的字符串即可,一样的道理。

HUWWW

最简单的 用点运算符"."进行字符串拼接啊
打开App,查看更多内容
随时随地看视频慕课网APP