2Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
557
557
EMPFEHLEN
-
Hallo,
ich möchte gerne in einer mySQL Datenbank eine Tabelle nach Datensätzen absuchen, wo das Feld Keywords eine oder mehrere Übereinstimmungen mit strings in einem bereitgestellten Array enthält. Das Array kann dabei allerdings bis zu 20-teilig und größer sein. Ein Ansatz wäre, mit sehr vielen OR-Bedingungen abzufragen, zum Beispiel:
aber das scheint mir nicht grad optimal zu sein, zumal ich nicht weiß, wie groß das Array sein wird und aber gerne alle Teile in die Suche mit einbeziehen möchte. Kennt jemand einen Guten Weg, so eine Suche umzusetzen?PHP-Code:Where keywords LIKE '%$suchwoerter[0]%' OR '%$suchwoerter[1]% OR '%$suchwoerter[2]% usw''
Gruß, Kevin
-
19.08.10 16:18 #2
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.017
Das müsste es sein:
Hat aber den Nachteil das dann der Inhalt von "feldname" genau mit den Einträgen im Array übereinstimmen muss.PHP-Code:$felder = array("a","b","c","d","e","f","g");
$in = implode("\", \"",$felder);
$sql = "SELECT feldname FROM tabelle WHERE feldname in (\"".$in ."\")";
Damit wird egal wie groß das Array ist eine Abfrage erstellt die auch nach Teilen des Begriffes sucht:
PHP-Code:$felder = array("a","b","c","d","e","f","g");
$in = implode("%' OR feldname LIKE '%", $felder);
$sql = "SELECT feldname FROM tabelle WHERE feldname LIKE '%$in%'";
Geändert von tombe (19.08.10 um 16:43 Uhr)
Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Hallo tombe,
Der erste Teil ist nicht was ich suche, weil der Inhalt von keywords genau dem Array entsprechen muss, also nicht geeignet, wenn es mehrere Keywords gibt. Aber deine Ergänzung war nun genau was ich gesucht habe! wow, du hast es ja echt drauf mit mysql! Danke dir, Bewertung folgt.
-
Das kann mittels REGEXP viel eleganter gelöst werden
Code sql:1 2 3
SELECT * FROM tabelle WHERE feldname REGEXP 'CD|FG|IJ'
und implenetiert in php
PHP-Code:$pattern = implode('|', $suchwoerter);
$sql = "
SELECT *
FROM tabelle
WHERE keywords REGEXP '{$pattern}";
Geändert von Yaslaw (24.08.10 um 12:09 Uhr) Grund: REGEXP 'xxx' = 1 durch REGEXP 'xxx' ersetzt
---------------------------------------------------------------------------------------------------
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
Ähnliche Themen
-
Array nach doppelten Werten durchsuchen
Von supercat1510 im Forum PHPAntworten: 4Letzter Beitrag: 28.05.10, 09:43 -
[C++] char Array durchsuchen nach String?
Von Nerran im Forum C/C++Antworten: 3Letzter Beitrag: 28.11.09, 19:43 -
Mehrdimensionales Array nach Schlüssel durchsuchen?
Von emuume im Forum PHPAntworten: 6Letzter Beitrag: 05.03.07, 21:51 -
Array nach best. Wert durchsuchen
Von Naisetsu im Forum PHPAntworten: 5Letzter Beitrag: 10.02.06, 10:39 -
array nach einem wert durchsuchen
Von jackobo im Forum PHPAntworten: 8Letzter Beitrag: 28.10.05, 13:36





Zitieren


Login




