如何在mysqli\u查询[php]中包含数学?

avwztpqn  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(264)
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) 

* cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin(radians(lat)) ) ) AS distance

FROM markers 
HAVING distance < 25 
ORDER BY distance 
LIMIT 0 , 20;

mysql大圆距离(哈弗公式)
我目前正在尝试在php代码中使用这个查询,但我不确定如何在mysqli\u查询中成功实现它。

$query = "SELECT FROM MyTable, (3959 * acos(cos(radians(37)) * cos(radians(TableLat)) * cos(radians(TableLng) - radians(-122)) + sin(radians(37)) * sin(radians(TableLat)))) 
    AS distance 
    HAVING distance < 25 
    ORDER BY distance 
    LIMIT 0 , 20";

    $stmt = mysqli_query($connectionInfo->conn, $query);

    if (!$stmt)
    {
        echo $connectionInfo->conn->error;
    }

这显然不起作用,因为所有与数学相关的内容都嵌套在“”中。在尝试创建查询时,如何绕过此问题?
错误消息:
sql语法有错误;查看与您的mariadb服务器版本相对应的手册,以获得正确的语法,以便在第1行使用near'from mytable(3959*acos(cos(radians(37))*cos(radians(lat))*cos(radi'

wz8daaqr

wz8daaqr1#

您的语法有错误,from在字段前面:

$query = "SELECT (3959 * acos(cos(radians(37)) * cos(radians(TableLat)) * cos(radians(TableLng) - radians(-122)) + sin(radians(37)) * sin(radians(TableLat)))) 
AS distance 
FROM MyTable
HAVING distance < 25 
ORDER BY distance 
LIMIT 0 , 20";

相关问题