Carlo: [MySQL] Strukturierte Ausgabe?

Beitrag lesen

Mach doch eine Abfrage und stelle für diese die Bedingungen zusammen anstatt für jede Bedingung eine eigene Abfrage zu erstellen.

Das wollte ich anfangs auch tun, doch war der Zusammenbau des SELECT-Teils mein gedankliches Problem. Wie ist es hier möglich, die vorkommenden Auswahlkombinationen (einzelne Spalten (nicht) durchsuchen) _ohne_ alle einzelnen Möglichkeiten (wie per vorgelagerter Abfrage usw.) explizit beschrieben zu bedienen, zumal ja auch das Auftauchen des jeweils ersten OR "geplant" werden muss. An anderen Stellen habe ich ebendies genutzt, doch dürfte der Aufwand zukünftig hinzukommender Spalten und deren Abfragemöglichkeit entsprechend viele neue Kombinationsdefinitionen nach sich ziehen ...

Von mysql_real_escape_string() ist aber im gezeigten Code nichts zu sehen. Es ist nicht günstig, das an anderer Stelle als beim Statement-Zusammenbau zu machen. Wenn du dir wegen der einzubauenden Funktionsaufrufe Sorgen um die Lesbarkeit des Statements machst, dann nimm sprintf().

Konkret ist es so: Gleich nach dem Formularcode baue ich die Verbindung zur DB auf und wende mysql_real_escape_string noch vor den anderen Abfragen (Mindestspaltenwahl u.ä.) an; nach diesem Kontrollblock folgen dann die angeführten if-Abfragen. Lässt sich dies tatsächlich durch eine mql_real_escape_string-Verlegung optimieren?

Wie man diese Zeichen maskiert, steht im MySQL-Handbuch auf der Seite, die LIKE beschreibt. PHP bietet dafür keine eigene Funktion, du kannst das mit einfachem String-Ersetzung hinbekommen (beispielsweise strtr(), zweite Variante).

Ja, danke.