Stephan: SQL ungefähr auslesen

Hallo,

ich möchte meine SQL-Tabelle Search-Engine auslesen. Normalerweise geht das ja so:

SELECT * FROM Search-Engine WHERE ????????? = $suchbegriff ORDER BY pr

Allerdings, wie mache ich es, dass er in der Spalte Titel und Meta und Kurzbeschreibung nach dem eingegebenen Suchbegriff sucht?

Und wie mache ich es, dass er nicht die anderen Teile des Textes beachtet, sondern nur Wort für Wort, sonst kämen ja kein Ergebnis, wenn ich BLA eingebe, in der Tabelle steht BLA BLI BLUBB.

Danke für die Tipps

Stephan

  1. Hi,

    das eine sind die and oder or verkünfpungen in der Where Klausel.

    D.h. ..... where spaltea = "Bla" or spalteb="Bla" or Spaltec = "Bla"

    Damit Du jedoch ein Teil Deines Strings bekommst, musst Du noch solche Platzhalter wie % einsetzen.

    Sprich ..... where spaltea = "%Bla%" or spalteb="%Bla%" or Spaltec = "%Bla%"

    Gruss Matze

    1. Vielen Dank!

      Stephan

      1. Sorry,

        da war noch ein Tipp / Denk fehler anstatt = solltest Du like "%Bla%" schreiben.

        Gruss Matze

        1. Ah, Ok, hat romy auch geschrieben...

          Stephan

    2. Hi MatzeA,,

      Sprich ..... where spaltea = "%Bla%" or spalteb="%Bla%" or Spaltec = "%Bla%"

      mit = wirst Du kaum Veränderungen des Suchergebnissen erreichen, LIKE ist der Operator Deiner Wahl.

      ciao
      romy

      1. Jup, das ist mir beim lesen Deines postings auch grad aufgefallen.

  2. Hi Stephan,

    SELECT * FROM Search-Engine WHERE ????????? = $suchbegriff ORDER BY pr

    Allerdings, wie mache ich es, dass er in der Spalte Titel und Meta und Kurzbeschreibung nach dem eingegebenen Suchbegriff sucht?

    mehrere Sapalten verknüpft man mit logischen Operatoren , in diesem Falle 'or'

    Und wie mache ich es, dass er nicht die anderen Teile des Textes beachtet, sondern nur Wort für Wort, sonst kämen ja kein Ergebnis, wenn ich BLA eingebe, in der Tabelle steht BLA BLI BLUBB.

    Wenn man Wörter ungefähr suchen will muss man Platzhalter benutzen. Bei den meisten DBMS ist dies das %-Zeichen. Ausserdem ist der Operator LIKE und nicht =

    Also konkret:
    SELECT * FROM Search-Engine WHERE titel LIKE %$suchbegriff% OR meta LIKE %$suchbegriff% ORDER BY pr

    Beachte bitte die gültigen Stringverknüpfungsregeln von PHP
    entweder
    SELECT * FROM Search-Engine WHERE titel LIKE %{$suchbegriff}% OR meta LIKE %{$suchbegriff}% ORDER BY pr

    oder

    "SELECT * FROM Search-Engine WHERE titel LIKE %".$suchbegriff."% OR meta LIKE %".$suchbegriff."% ORDER BY pr"

    ciao
    romy

    1. Klasse, Danke!

      Stephan