在Mysql数据库中搜索选定的行

时间:2016-03-29 17:08:51

标签: php mysql mysqli prepared-statement

我正在尝试使用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);

我知道我需要做一个子查询。但任何人都可以解释做子查询的格式是什么,或者我的方法是否正确?

1 个答案:

答案 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);