gpt4 book ai didi

PHP MySQL 使用字符串和位置距离进行搜索

转载 作者:行者123 更新时间:2023-11-29 23:03:28 24 4
gpt4 key购买 nike

我有表user,其中包含纬度经度列。

另一个表products,其中包含列title description

我正在尝试创建一个 PHP 搜索表单,其中结果通过关键字/字符串输入和位置输入进行过滤。

所以本质上,我试图查询产品表以查找匹配项,同时查询用户表以查找邻近性。您搜索产品,结果会显示距离您最近的有该产品的商店。

这是我用于匹配关键字/字符串的查询

从产品中选择 * WHERE MATCH(item_name,item_desc) AGAINST(:searchstr IN BOOLEAN MODE) AND public = 1

我试图使用外键/引用 products 表中的 user 表中的 lat/lng 列,但我没有运气。

"SELECT *,
truncate((degrees(acos(
sin(radians(lat))
* sin( radians(:lat))
+ cos(radians(lat))
* cos( radians(:lat))
* cos( radians(lng - :lng) )
) ) * 69.09),1) as distance FROM users, product
WHERE MATCH(product.item_name,product.item_desc) AGAINST(:searchstr IN BOOLEAN MODE)
AND public = 1";

知道我该怎么做吗?

谢谢

编辑:我已经使用外键将每个产品与特定用户连接起来 (user.id = products.user_id)

最佳答案

如果我理解正确,您需要将两个表连接在一起。试试这个:

"SELECT *,
truncate((degrees(acos(
sin(radians(lat))
* sin( radians(:lat))
+ cos(radians(lat))
* cos( radians(:lat))
* cos( radians(lng - :lng) )
) ) * 69.09),1) as distance FROM users
JOIN product ON product.user_id = users.id
WHERE MATCH(product.item_name,product.item_desc) AGAINST(:searchstr IN BOOLEAN MODE)
AND public = 1
ORDER BY distance";

此外,请确保您拥有正确的表名称。在您的问题中您说“用户”和“产品”,但在您的查询中您有“用户”和“产品”。

关于PHP MySQL 使用字符串和位置距离进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28389995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com