2016-03-29 5 views
0

PHPでmysqli prepared statementを使用してクエリを実行しようとしています。 選択した行のキーワードのみを使用して検索したいと考えています。選択した行のMysqlデータベースを検索

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

私はサブクエリを行う必要があることを知っています。しかし、誰でもサブクエリのフォーマットがどうなるか説明することができますか、私のアプローチは正しいですか?

答えて

2

サブクエリは一切行う必要はありません。あなたがUSER_ID、ステータス、および身体の一致を持つレコードを制限されるように、結果は同じになります

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

:だけのようなあなたのselect文に他の条件を追加します。また

、あなたはこのSQLを実行して、あなたの列にフルテキストインデックスを持っていることを確認してください。私は、「列リストを一致FULLTEXTインデックスを見つけることができません」の文の上の実行中にエラーが発生しました

ALTER TABLE complaints ADD FULLTEXT(body); 
+0

を – Dharmendra

+0

感謝男それは本当に助けました – Dharmendra

+0

あなたのエラーに答えるために私の答えを更新しました。 – Gremash

関連する問題