Probleme mit "LIKE"

toboli

Erfahrenes Mitglied
Hallo,

ich möchte in einer Datebnak mehrere Felder bei einer Suche auslesen.

Dies mache ich mit
PHP:
$abfrage = mysql_query("SELECT * FROM $tab WHERE fbranche1 like '$wort' AND fbesch like '$wort' AND fname like '$wort'") or die(mysql_error());

Allerdings erhalte ich keinerlei Treffer.

Suche ich haber nach dem gleichen Wort mit

PHP:
$abfrage = mysql_query("SELECT * FROM $tab WHERE fname like '$wort'") or die(mysql_error());

wird dies gefunden.

Kann mir hier jemand helfen ?
 
Sicher dass da keine "or" dazwischen gehören an Stelle der "and"?! :suspekt:

So ist es besser für eine Volltextsuche:
PHP:
like '%".$suchmich."%'
 
Kommt drauf an, was du willst... AND steht für das deutsche "und", OR steht für das deutsche "oder" :suspekt: :-)
 
Naja, ich will AND. Aber das geht ja beides nicht... Wenn ich wenigstens nen SQL-Fehler bekommen würde.
 
Du solltest dir überlegen, welche Logik hinter deine Abfrage steht: Möchtest du alle Datensätze, bei denen
  • Merkmal A gleich einem Wert und Merkmal B geich einem Wert und Merkmal C gleich einem Wert ist, handelt es sich um eine Konjunktion, also um eine UND-verknüpfte Logik.
  • Merkmal A gleich einem Wert oder Merkmal B geich einem Wert oder Merkmal C gleich einem Wert ist, handelt es sich um eine Disjunktion, also eine ODER-verknüpfte Logik.
Übrigens ist dies eine Disjunktion.
 
Also nochmal:

Drei Spalten einer Tabelle sollen nach z.B. "Hallo" durchsucht werden.

In Spalte 1 steht z.B. der Firmenname, in Spalte 2 die Straße und in Spalte 3 die Firmenbeschreibung. Sollte nun nach dem Wort "Hallo" gesucht werden, sollen
eben alle diese Spalte durchsucht werden. Also handelt es sich dabei um eine "UND"
suche, wenn ich nicht völlig daneben liege.

Nur liegt da nicht das Problem. Sondern egal ob mit AND oder OR, es wird einfach nichts
gefunden. Das ist das Problem. Also muss dies an dem Code liegen...
 
Ja, du liegst völlig daneben.

Probier mal Folgendes:
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));

	…

?>
Wenn nun die var_dump()-Funktion „bool(true)“ ausgibt, war die Abfrage erfolgreich.
 
Zuletzt bearbeitet:
Sorry, aber wenn man nicht die Grundzüge logischen Denkens beherscht, sollte man die Finger vom Programmieren lassen. (nicht persönlich nehmen, bitte)

Hier eine Möglichkeit um dir in solchen Situationne zu helfen:
Versuche dir das irgendwie zu evrdeutlichen... Ich möchte einen Datensatz finden, der den Text "Hallo" in den Feldern "Feld1" oder "Feld2" oder "Feld3" hat. Daraufhin kannst du dir deinen MySQL-Query formen.
 
Danke mal,

nun wird wenigstens was gefunden. Allerdings nur ein Datesatz bei einem Vorkommen in "fname". Steht der gesuche Begriff bei einem Datensatz in"fbesch", wird dieser nicht gefunden.
 
Zurück