tutorials.de Buch-Aktion 02/2012
Like Tree2Danke
  • 1 Beitrag von tombe
  • 1 Beitrag von Yaslaw
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
557
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    kevinweb kevinweb ist offline Grünschnabel
    Registriert seit
    Aug 2010
    Beiträge
    4
    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:
    PHP-Code:
    Where keywords LIKE '%$suchwoerter[0]%' OR  '%$suchwoerter[1]% OR  '%$suchwoerter[2]% usw'' 
    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?

    Gruß, Kevin
     

  2. #2
    Avatar von tombe
    tombe tombe ist gerade online Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.017
    Das müsste es sein:

    PHP-Code:
    $felder = array("a","b","c","d","e","f","g");

    $in implode("\", \"",$felder);

    $sql "SELECT feldname FROM tabelle WHERE feldname in (\"".$in ."\")"
    Hat aber den Nachteil das dann der Inhalt von "feldname" genau mit den Einträgen im Array übereinstimmen muss.

    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)
    kevinweb bedankt sich. 
    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.

  3. #3
    kevinweb kevinweb ist offline Grünschnabel
    Registriert seit
    Aug 2010
    Beiträge
    4
    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.
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    4.673
    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
    Steusi bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    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

  1. Array nach doppelten Werten durchsuchen
    Von supercat1510 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 28.05.10, 09:43
  2. [C++] char Array durchsuchen nach String?
    Von Nerran im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 28.11.09, 19:43
  3. Antworten: 6
    Letzter Beitrag: 05.03.07, 21:51
  4. Array nach best. Wert durchsuchen
    Von Naisetsu im Forum PHP
    Antworten: 5
    Letzter Beitrag: 10.02.06, 10:39
  5. array nach einem wert durchsuchen
    Von jackobo im Forum PHP
    Antworten: 8
    Letzter Beitrag: 28.10.05, 13:36