Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带字符串和位置距离的PHP MySQL搜索_Php_Mysql - Fatal编程技术网

带字符串和位置距离的PHP MySQL搜索

带字符串和位置距离的PHP MySQL搜索,php,mysql,Php,Mysql,我有一个带有纬度和经度列的表用户 另一个表包含列标题说明的产品 我试图创建一个PHP搜索表单,其中的结果通过关键字/字符串输入和位置输入进行过滤 所以本质上,我试图查询products表以查找匹配项,同时查询users表以查找邻近性。您搜索一个产品,结果会显示离您最近的商店 这是我对匹配关键字/字符串的查询 从产品中选择*,其中MATCHitem_name,item_desc-on:searchstr处于布尔模式且public=1 我试图使用外键/引用products表中user表中的lat/l

我有一个带有纬度和经度列的表用户

另一个表包含列标题说明的产品

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

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

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

从产品中选择*,其中MATCHitem_name,item_desc-on:searchstr处于布尔模式且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";
此外,请确保表名正确。在你的问题中,你说的是用户和产品,但在你的查询中,你有用户和产品