我正在尝试使用PHP中的mysqli prepared语句进行查询。 我想仅在选定的行上使用关键字进行搜索。
$stmt = $this->conn->prepare("SELECT complaint_id
FROM complaints WHERE user_id = ?
AND status IN (?,?) AND
complaint_id IN ( SELECT complaint_id FROM complaints Where MATCH (body) AGAINST ( ? ))
ORDER BY user_id ASC");
$stmt->bind_param("iiis", $user_id,$status1,$status2,$keyword);
我知道我需要做一个子查询。但任何人都可以解释做子查询的格式是什么,或者我的方法是否正确?
答案 0 :(得分:2)
你根本不需要做一个子查询。只需将其他条件添加到您的select语句中,如:
SELECT complaint_id
FROM complaints WHERE user_id = ?
AND status IN (?,?) AND
MATCH (body) AGAINST ( ? )
ORDER BY user_id ASC
结果与限制具有user_id,status和body匹配的记录的结果相同。
此外,通过运行此SQL,确保您的列上有完整的文本索引:
ALTER TABLE complaints ADD FULLTEXT(body);