Eda: Abfrage mit variablen Kriterien

Beitrag lesen

Hallo allerseits

Ich habe da eine Frage.

Ich habe eine Datenbank gebastelt, die zu Bildern Stichworte speichert: In der einen Tabelle die Bilder (ca. 1000) und in der anderen die Stichworte zu den entsprechenden Bild-IDs.

Nun möchte alle jene Bilder anzeigen, die eine bestimmte Kombination von Stichworten hat. Wobei dies sich je nach Abfrage ändern kann.

Bisher habe ich das so gelöst:

$krit = "( ( ( pppstwfff ) AND nnnstwfff) OR pppstwfff )";

ppp .. BildID IN    (SELECT BildID FROM Stichworte WHERE stichwort = '
nnn .. BildID NOT IN (SELECT BildID FROM Stichworte WHERE stichwort = '
fff .. ' )
(mit str_replace)

mysql_query("SELECT BildID FROM Bilder WHERE $krit")

Und eigentlich funktioniert das auch.
Bloss sobald es das $krit länger wird, hängt sich das System auf: Internal Server Error.
Und wenn ein ODER drin ist hängt es sich noch viel früher auf.

Könnte es sein, dass ich hier eine sinnlos ressourcenverschlingende Methode verwende?

Ich habe mir überlegt, ob ich nicht die ganze Tabelle in einen Array pappen kann und dann dort entsprechend von php suchen lasse. Da ist mir aber nicht klar, wie ich eine so variable Bedingung implementieren könnte. exec wäre wohl eine Möglichkeit, aber da lasse ich meist die Finger davon. Und ich bin mir nicht mal sicher, ob das von der Performance unbedingt besser wäre.

Kann mir einer nen Tip geben, ob ich auf den Holzweg bin?

Vielen Dank schon mal, Eda