php - 使用来自另一个表的结果过滤 mysql 查询结果
问题描述
我需要帮助来向我已经工作的 sql 查询添加过滤器。我需要根据另一个表中的结果过滤结果。在不添加过滤器的情况下,代码可以正常工作,但是一旦添加,我就会收到以下错误“警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,在第 10 行的 C:\xampp\htdocs\buff\marketplace.php 中给出的布尔值” .
这是我的查询代码:
$sql = "SELECT id, uid, jobId, serviceName, budget, description, start_date, end_date, date_created, priority, lat, lng, distance
FROM (
SELECT z.id,
z.uid,
z.jobId,
z.serviceName,
z.budget,
z.description,
z.start_date,
z.end_date,
z.date_created,
z.priority,
z.lat, z.lng,
p.radius,
p.distance_unit
* DEGREES(ACOS(COS(RADIANS(p.latpoint))
* COS(RADIANS(z.lat))
* COS(RADIANS(p.longpoint - z.lng))
+ SIN(RADIANS(p.latpoint))
* SIN(RADIANS(z.lat)))) AS distance
FROM marketplace AS z
JOIN ( /* these are the query parameters */
SELECT $lat AS latpoint, $lng AS longpoint,
50.0 AS radius, 111.045 AS distance_unit
) AS p
WHERE marketplace.sid IN (SELECT sid FROM selectedservice WHERE uid=$uid AND is_approve=1) AND status=1 AND uid != $uid AND z.lat
BETWEEN p.latpoint - (p.radius / p.distance_unit)
AND p.latpoint + (p.radius / p.distance_unit)
AND z.lng
BETWEEN p.longpoint - (p.radius / (p.distance_unit * COS(RADIANS(p.latpoint))))
AND p.longpoint + (p.radius / (p.distance_unit * COS(RADIANS(p.latpoint))))
) AS d
WHERE distance <= radius
ORDER BY distance
LIMIT 15";
这是我添加的用于过滤结果的行:
marketplace.sid IN (SELECT sid FROM selectedservice WHERE uid=$uid AND is_approve=1)
这是当前在没有过滤器的情况下工作的其余代码。
$sql = "SELECT id, uid, jobId, serviceName, budget, description, start_date, end_date, date_created, priority, lat, lng, distance
FROM (
SELECT z.id,
z.uid,
z.jobId,
z.serviceName,
z.budget,
z.description,
z.start_date,
z.end_date,
z.date_created,
z.priority,
z.lat, z.lng,
p.radius,
p.distance_unit
* DEGREES(ACOS(COS(RADIANS(p.latpoint))
* COS(RADIANS(z.lat))
* COS(RADIANS(p.longpoint - z.lng))
+ SIN(RADIANS(p.latpoint))
* SIN(RADIANS(z.lat)))) AS distance
FROM marketplace AS z
JOIN ( /* these are the query parameters */
SELECT $lat AS latpoint, $lng AS longpoint,
50.0 AS radius, 111.045 AS distance_unit
) AS p
WHERE status=1 AND uid != $uid AND z.lat
BETWEEN p.latpoint - (p.radius / p.distance_unit)
AND p.latpoint + (p.radius / p.distance_unit)
AND z.lng
BETWEEN p.longpoint - (p.radius / (p.distance_unit * COS(RADIANS(p.latpoint))))
AND p.longpoint + (p.radius / (p.distance_unit * COS(RADIANS(p.latpoint))))
) AS d
WHERE distance <= radius
ORDER BY distance
LIMIT 15";
selectedservice 和 marketplace 是具有 sid 和 uid 字段的表。$uid 是整个页面中可用的登录用户 ID。
我只需要知道如何挤入上述过滤器以显示用户启用的结果而不是所有结果。任何帮助将不胜感激。
解决方案
推荐阅读
- php - WooCommerce 在 foreach 中获取所有订单
- java - 通过键将 GroupFlux 收集到 Hashmap 中
- php - PHP 将字符串从 ASCII 转换为 UTF-8 / WINDOWS-1255
- android-studio - Androidstudio 项目中的 Project.xml。这是源代码控制的一部分吗?
- ruby-on-rails - 在rails中创建belongs_to关联时1:整数的未定义方法`build_part'
- python - python pd.DataFrame({'Dokuman': docs, 'Sinif': classes}) 中的熊猫数据框问题
- git - git的文件写入(在工作目录中)是原子的吗?
- angular - 事件仅在第一次点击时触发 angular - 7
- python - 如何从类名中获取类对象
- vue.js - Vue Electron,开发工具抛出异常