Probleme mit "LIKE"

@ Lars Michelsen

Nana, wer wird den hier wieder mal voreilige Schlüsse von wegen "logischem Denken" ziehen. Ich seh das eher von der Seite, dass ich hier ne Urlaubsvertretung schiebe und eigentlich nix mit PHP bisher zu tun hatte und es mich auch ganz ehrlich überhaupt nicht
interessiert. Da man aber nun mal in solchen Situationen flexibel sein sollte, versuche ich mein bestes und daher versuche ich es eben über dieses Forum.

Jetzt auch nicht persönlich nehmen, aber ich finde solche Postings wie Deins völlig am Thema vorbei und unnötig. Dies hilft keinem weiter... Du könntest mich ja an Deinem "logischen Denkvermögen" teilhaben lassen und mir die Lösung des Problems geben...
 
Ich vermute mal, dass es genügt, wenn der Suchbegriff in einem der Felder vorkommt und dass es mehr Einschränkung als nötig darstellt, wenn eins der Felder exakt dem Suchbegriff entsprechen muss. Wenn dem so ist, solltest Du nicht, wie in den bisher geposteten Beiträgen, nach nur diesem Begriff suchen, sondern nach "irgendwas, dann der Begriff und dann noch irgendwas". Das "irgendwas" entspräche in der Windows-Suche dem Sternchen, in MySQL dem Prozent-Zeichen. Hier mal die Änderung am Beispiel des Beitrags von Gumbo:
PHP:
<?php

    …

    $query = "
        SELECT
                *
          FROM
                `".$tab."`
          WHERE
                `fbranche1` LIKE '%".mysql_real_escape_string($wort)."%'
            OR  `fbesch`    LIKE '%".mysql_real_escape_string($wort)."%'
            OR  `fname`     LIKE '%".mysql_real_escape_string($wort)."%'
        ";
    $result = mysql_query($query) or die(mysql_error());
    var_dump(is_resource($result));

    …

?>
Gruß hpvw
 
Nungut:

PHP:
<?php
    $query = "SELECT * FROM ".$tab." WHERE fbranche1 LIKE '%".$wort."%' OR fbesch LIKE '%".$wort."%' OR fname LIKE '%".$wort."%'";
    $result = mysql_query($query) or die(mysql_error());
    while($data = mysql_fetch_array($result))
    {
        //Und hier kannste dann machen was du willst...
    }
?>

Wenns damit nicht geht, liegt der Fehler denke ich woanders...

Btw. Solch ein Posting wie meins weiter oben ist nicht unnötig.Ich habe dich bereits an meinem "Logischen Denkvermögen" teilhaben lassen und dir mitunter einen Tipp wie du solche Probleme alleine ohne große Umstände lösen könntest. Aber gut, die einen wollens lernen, die anderen machens nur als "Aushilfe", wie auch immer...
...ich hoffe der obige Quelltext hilft dir weiter...
 
Also wenn man eine Suche in einer DB vornehmen möchte und dazu nur drei Spalten abfragen will, benennt man diese drei Spalten auch im SELECT. Das zum einen. Zum anderen wird die Suche entsprechend Augebaut und zwar per Index.

Eine Suche in Form von ... WHERE tabelle LIKE '$wort%' .... ist als Index zu betrachten und bringt ganz sicher ein anderes Ergebnis als ... WHERE tabelle LIKE '%$wort%' ..., weil hier kein Index entsteht und somit das Ergebnis vollkommen anderst erfolgen wird.

Die Frage ist also, wonach genau gesucht wird. Wird nach dem Anfangsbuchstaben der Firma gesucht, Dann wäre es LIKE '%$wort' oder soll der Begriff in den Wörtern selbst vorkommen, dann wäre %$wort% zu verwenden.

Also
PHP:
<?php
$db_suche = mysql_query("SELECT spalte1, spalte2, spalte3 FROM tabelle1 WHERE spalte1 LIKE '%$wort' OR spalte2 LIKE '%$wort' OR spalte3 LIKE '%$wort'");

while() {

}
?>
 
Also wenn man eine Suche in einer DB vornehmen möchte und dazu nur drei Spalten abfragen will, benennt man diese drei Spalten auch im SELECT.
Wenn man nur drei Spalten auswählen möchte, benennt diese explizit.
 
saila hat gesagt.:
Die Frage ist also, wonach genau gesucht wird. Wird nach dem Anfangsbuchstaben der Firma gesucht, Dann wäre es LIKE '%$wort' oder soll der Begriff in den Wörtern selbst vorkommen, dann wäre %$wort% zu verwenden.
Wenn ich nach dem Anfangsbuchstaben suche, gehört das Prozent-Zeichen ans Ende des Suchbegriffs und nicht an den Anfang.

Gruß hpvw
 
Zurück