MySQL & PHP : Mehrere Keyword-Suche

Ich habe einen string mit durch Komma getrennte Schlüsselwörter. Zum Beispiel:

$keywords = 'keyword1, keyword2, keyword3';

Meinem Tisch-schema, benannt tbl_address ist wie folgt ( vereinfacht ) :

id        INT(11)        PRIMARY KEY, AUTO INCREMENT
address   VARCHAR(250)   NOT NULL

Übernehmen, ich habe mit MySQLi in PHP ( nicht PDO ).

Hier ist mein Aktueller Ansatz:

$result = array();
$keyword_tokens = explode(',', $keywords);
foreach($keyword_tokens as $keyword) {
  $keyword = mysqli_real_escape_string(trim($keyword));
  $sql = "SELECT * FROM tbl_address WHERE address LIKE'%$keyword%'";
  //query and collect the result to $result
  //before inserting to $result, check if the id exists in $result.
  //if yes, skip.
}
return $result;

Dieser Ansatz funktioniert, ist aber ineffizient in der Leistung. Wenn es gibt eine Menge von Schlüsselwörtern, wird eine Menge Abfragen.

Meine Frage ist, gibt es einen besseren Weg, um das gleiche Ziel erreichen ? also, was ist der einfachste Weg, um alle Datensätze zurück, die mit der Adresse, mit der die keywords ?

Das kann dir helfen: stackoverflow.com/a/9736386/1983854
Die Kombination von "WIE" und "IN": stackoverflow.com/questions/1865353/...
Im ernst, warum hast du nicht meine REGEXP-one-liner?
Wenn das Schlüsselwort enthält den regulären Ausdruck keywords, die Abfrage schlägt fehl, oder erzeugen unerwartete Ergebnis, z.B. keyword = '|=|=|'
Natürlich können Sie tun, das ist deine Frage 😉

InformationsquelleAutor Raptor | 2013-04-16

Schreibe einen Kommentar