2016-03-29 5 views
0

Ich versuche, eine Abfrage mit mysqli vorbereiteten Anweisung in PHP zu tun. Ich möchte nur mit ausgewählten Keywords in ausgewählten Zeilen suchen.Suche in Mysql Datenbank auf ausgewählten Zeilen

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

Ich weiß, dass ich eine Unterabfrage tun muss. Aber kann jemand erklären, was das Format der Unterabfrage sein wird oder ist mein Ansatz richtig?

Antwort

2

Sie sollten keine Unterabfrage durchführen müssen. Fügen Sie einfach den anderen Zustand zu Ihrer select-Anweisung wie:

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

Das Ergebnis wird das gleiche sein, wie Sie Datensätze zu begrenzen werden, die das user_id, Status und Körperspiel.

Stellen Sie außerdem sicher, dass Sie einen Volltextindex auf Ihrer Spalte durch diese SQL ausgeführt wird:

ALTER TABLE complaints ADD FULLTEXT(body); 
+0

ich obige Aussage einen Fehler bekam bei der Ausführung – Dharmendra

+0

Dank „nicht FULLTEXT- Sions die Spaltenliste gefunden“ Mann Es hat wirklich geholfen – Dharmendra

+0

Ich habe meine Antwort aktualisiert, um auf Ihren Fehler zu reagieren. – Gremash