• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Wildcard Abfrage mit MySQL

Dadelu

Reinette Coulon
Registriert
06.07.05
Beiträge
939
Hallo Zusammen

Ich sitze vor einem Problem und vor lauter Bäume sehe ich den Wald nicht mehr :(

Ich bekomme als Parameter von einer Seite 3 Variabeln. Diese können abgefüllt sein, müssen aber nicht.

Nun, wie erstelle ich ein entsprechende SQL - Abfrage?
Ich habe an sowas gedacht:
Code:
SELECT irgendwas FROM irgendwo WHERE SPALTE1='%$PARM1%' AND SPALTE2='%$PARM2%' AND SPALTE3='%$PARM3%'

Aber irgendwie funktioniert es nicht... Ich denke es liegt daran, dass man ja nicht zwingend etwas auswählen muss. Intepretiert das dann SQL richtig, dass er eine Art * Abfrage für diese Spalte macht?

Hiiilfe :)

Gruss, Dadelu
 
äh, vielleicht nicht mit AND sondern mit OR ?

Das würde die Logik verändern ;) Ich will ja, dass wenn ich 3 Sachen anwähle, auch diese 3 Parameter als Kriterien genommen werden.

Vieleicht habe ich die eigentliche Logik zu wenig erklärt..

Der Benutzer kann aus 3 DropDown Menus sachen selektieren. Bei jedem Menu kann er die Option Alle auswählen. Aber wenn er jetzt beim ersten Alle selektiert und bei den restlichen 2 einen anderen Wert, soll eben entsprechend die SQL Abfrage alle Resultate bringen, welche die 3 Bedinungen erfüllen.. Ach ist kompliziert :(
 
Mal mit LIKE versucht??

Code:
SELECT irgendwas FROM irgendwo WHERE SPALTE1 LIKE ('%$PARM1%') AND SPALTE2 LIKE ('%$PARM2%') AND SPALTE3 LIKE ('%$PARM3%')

CU Jan ;-)
 
Hmm ja habe ich versucht. Das komische isch, wenn ich das Query mittels phpMyAdmin absetze funktioniert es, aber aus der Webseite heraus nicht.

Sieht jemand den Unterschied? :)

phpMyAdmin Variante:
Code:
SELECT `datum`, `benutzerFRMD`, `aktionFRMD`, `anzahl` FROM `ERFASSUNGEN` WHERE `benutzerFRMD` LIKE(1) AND `kunde` LIKE(1) AND `aktionFRMD` LIKE('m4321') AND((`datum` >= '00.00.00') AND (`datum` <= '99.99.99'))

PHP - Variante
Code:
SELECT datum,benutzerFRMD,aktionFRMD,anzahl,kunde FROM ERFASSUNGEN WHERE benutzerFRMD LIKE (1) AND kunde LIKE (1) AND aktionFRMD LIKE ('m4321') AND ((datum >= '00.00.00') AND (datum <= '99.99.99'))
 
Problem gelöst.

Syntax mässig war alles richitg. Schlussendlich hat sich irgendwo im Query String ein . eingeschlichen und der hat dann die Abfrage "abendieren" lassen mit einem SQL - Fehler.

Trotzdem Danke für die Hilfe!