2016-04-13 7 views
0

Ich versuche, Filter zu einer DB-Suche hinzuzufügen. Ich habe eine Suche, die etwas Text benötigt und versucht, Elemente mit diesem Text im Titel zu finden. Ich habe auch einen Preisbereichfilter. Dieser Code ist unten und funktioniert gutWählen Sie aus einer Select-Anweisung in PHP & mySQL

$sql = "SELECT * FROM items where title LIKE '%". $title ."%' AND price > '". $price1 ."' AND price < '".$price2."' Limit 70"; 

Jetzt versuche ich mehr und mehr Filter. Gibt es eine Auswahl aus dem obigen Code? Ich möchte nicht einfach eine längere SELECT-Anweisung mit Tonnen von if-Anweisungen machen. Ich würde es vorziehen, die Ausgabe der vorherigen Auswahl zu übernehmen und diese mit einer anderen Auswahl zu verfeinern. Ist das möglich?

EDIT 1 Kontext:

Benutzer die Eingabe der Informationen diejenigen. Dies ist zum Suchen der Elemente auf meiner Website.

+0

nur neugierig, was Sie erreichen wollen. Es ist völlig unklar, ob Sie nicht mehr erklären. Wie möchten Sie verfeinern? –

+0

Fügen Sie PHP hinzu, in dem Sie dies versuchen. – Harry

+0

Sie sollten mit PDO untersuchen und Ihre Abfragen mit vorbereiteten Anweisungen und gebundenen Parametern schreiben, um sich vor LIKE '% "zu schützen. $ Injection.' '% AND other'" . '' ... – gavgrif

Antwort

1

Es gibt keinen anderen nützlichen Weg als das Hinzufügen vieler verschiedener Bedingungen zu Ihrer WHERE Ursache, wenn Sie nur SQL verwenden. Es ist möglich, mehrere naste SELECT-Anweisungen in Ihrer Abfrage zu verwenden, aber dies macht Ihren Code weder lesbarer noch schneller.

Eine elegantere Lösung ist die Verwendung von Abfrageobjekten oder einer anderen Form der objektorientierten Abfrageabstraktion (z. B. ZendDB).

+0

Danke für die Antwort, ich werde es am Morgen akzeptieren, wenn niemand Ihnen Unrecht beweist – Rorschach

0

Sie können einige der MySQL-String-Funktionen wie INSTR(), MATCH verwenden, die Ihr Leben ein wenig einfacher machen und auch die Lesbarkeit des Codes helfen. Sie können auch REGEXP und NOT REGEXP für die Mustererkennung verwenden. Die Liste der String-Funktionen ist here.