PHP - mySQL 查询问题

发布于 2024-10-31 04:11:12 字数 836 浏览 0 评论 0 原文

我正在我的 SQL 数据库中找到具有 lon/lat 的半径区域中最近的位置(来自 Google API 的长/纬度),这是我的查询:

$query = "SELECT id, ( 3959 * acos( cos( radians(".$lat.") ) * cos( radians( lat ) ) * cos( radians( lon ) - radians(".$long.") ) + sin( radians(".$lat.") ) * sin( radians( lat ) ) ) ) AS distance FROM finder_location HAVING distance < 25 ORDER BY distance LIMIT 0 , 1";

    $result = mysql_query( $query );

    $row = mysql_fetch_array($result);
    echo $row['id'];

查询在 phpMyAdmin 内正确返回为:

id  9
distance 0.74066713768542

因此,查询正在正确编译。 ..

但是,当我尝试用 PHP 输出时,我收到以下错误:

您的 SQL 语法有错误; 检查对应的手册 您的 MySQL 服务器版本 在 '>) 附近使用正确的语法 ) * cos( 弧度( 纬度 ) ) * cos( 弧度( 经度 ) - 弧度(-73.988307 ) )' 在第 1 行警告:mysql_fetch_array():提供 参数不是有效的 MySQL 结果 资源

I'm finding the nearest location (with long/lat from Google API) in a radius area with lon/lat in my SQL database, here's my query:

$query = "SELECT id, ( 3959 * acos( cos( radians(".$lat.") ) * cos( radians( lat ) ) * cos( radians( lon ) - radians(".$long.") ) + sin( radians(".$lat.") ) * sin( radians( lat ) ) ) ) AS distance FROM finder_location HAVING distance < 25 ORDER BY distance LIMIT 0 , 1";

    $result = mysql_query( $query );

    $row = mysql_fetch_array($result);
    echo $row['id'];

The query is returning correctly inside phpMyAdmin as:

id  9
distance 0.74066713768542

So, the query is compiling correctly...

But, when I tried to output in PHP, I get these errors:

You have an error in your SQL syntax;
check the manual that corresponds to
your MySQL server version for the
right syntax to use near '>) ) * cos(
radians( lat ) ) * cos( radians( lon )
- radians(-73.988307 ) )' at line 1 Warning: mysql_fetch_array(): supplied
argument is not a valid MySQL result
resource

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

若水般的淡然安静女子 2024-11-07 04:11:12

您的 php $lat 变量未正确填充。您可以在 mysql 错误中看到 html 标记的尾部。调试您的 $lat$long 以确保它们在查询之前具有正确的值。

Your php $lat variable is not populated correctly. You can see the trailing end of an html tag in the mysql error. Debug your $lat and $long to make sure they have the correct values before the query.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文