在 Mysql 数据库中搜索所选行

Search in Mysql database on selected rows

我正在尝试使用 PHP 中的 mysqli 准备语句进行查询。 我只想在选定的行上使用关键字进行搜索。

$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);

我知道我需要做一个子查询。但是谁能解释一下子查询的格式是什么,或者我的方法是否正确?

您根本不需要执行子查询。只需将其他条件添加到您的 select 语句中,例如:

SELECT complaint_id 
    FROM complaints WHERE user_id = ? 
    AND status IN (?,?) AND 
    MATCH (body) AGAINST ( ? )
    ORDER BY user_id ASC

结果将与您限制具有 user_id、状态和正文匹配的记录相同。

另外,通过 运行 这个 SQL:

确保你的专栏有全文索引
ALTER TABLE complaints ADD FULLTEXT(body);