Hauptmenü

Untermenü

PHP - Grundlagen - Programmierstile - SQL-Abfragen

1. Ein Hinweis vorab

Auch wenn ich bisher noch nicht auf SQL eingegangen bin, so solltet ihr euch das doch als eine Art von Vorbereitung durchlesen. Auch wenn ihr erst mal nur Bahnhof versteht. Die Details zu dieser Abfragesprache kommen im nächsten Hauptkapitel.

2. Das Problem

SQL-Abfragen neigen dazu, länger und immer länger zu werden. Meiner Meinung nach nimmt das proportional mit dem eigenen Wissen zu. Leider geht das zu Lasten der Lesbarkeit. Denkt nur mal an die Ungetüme, die ich euch hier um die Ohren hauen werde. Oder an das, was ihr selbst schon fabriziert habt. Selbst wenn man die Abfrage per Zeichenkettenverknüpfung in einzelne Teile zerlegt, so bringt das in Punkto Lesbarkeit herzlich wenig.


<?php
  $query  'SELECT anzahl, produkt, preis, nummer, zulieferer, ';
  $query .= 'hersteller.ort  FROM bestellung ';
  $query .= 'LEFT JOIN produkt ON produkt.id=bestellung.pr_id ';
  $query .= 'LEFT JOIN kunde ON kunde.id=bestellung.kd_id ';
  $query .= 'LEFT JOIN hersteller ON hersteller.id=bestellung.hr_id ';
  $query .= 'WHERE kunde.id = '.$_GET['id'];
?>

3. Die Lösung

Ist eigentlich so einfach, dass ich Superhirn (Ironie) einfach nicht von selbst darauf gekommen bin. Nein, das musste ich erst bei meinem damals neuen Brötchengeber erfahren. Das Prinzip ist ganz einfach. Man schreibt seine Abfragen in etwa so wie seinen PHP-Code. Allerdings gibt es hier wieder etliche Variationen, so dass ich euch nur mal meinen Favoriten zeige.


<?php
  $query 'SELECT 
              anzahl, 
              produkt, 
              preis, 
              nummer, 
              zulieferer, 
              hersteller.ort AS ort
            FROM 
              bestellung
            LEFT JOIN 
              produkt ON produkt.id=bestellung.pr_id
            LEFT JOIN 
              kunde ON kunde.id=bestellung.kd_id
            LEFT JOIN
              hersteller ON hersteller.id=bestellung.hr_id
            WHERE kunde.id = '.$_GET['id'].'
              AND anzahl > 10';
?>

Als einfache Grundregel gilt folgendes. Die SQL-Befehle wie INSERT, UPDATE oder SELECT werden jeweils in eigene Zeilen geschrieben, ebenso wie die wichtigen Zusatzanweisungen, als da wären so Sachen wie FROM, WHERE oder jedwede Joins-Anweisung. Tabellen- oder Spaltennamen werden eingerückt und bei mehreren untereinander gesetzt. Hilfsanweisungen wie ON oder AS sollten nicht zusätzlich in neuen Zeilen auftauchen. Man kann es auch übertreiben.

4. Fazit

Ich hoffe, ihr habt hier einen guten Einstieg in mögliche Programmierstile gefunden und beherzigt das dem entsprechend. Allerdings muss ich zu meiner Schande und der meiner Kollegen sagen, dass sich selbst die Profis nicht immer daran halten. Das liegt einfach in der Natur der Sache. Man ist mit einem Problem beschäftigt und hat weder Zeit noch Lust, sich an irgendwelche Standards zu halten. Allerdings sollte man doch zumindest versuchen, seinen Code entsprechend eigener/anderer Vorgaben gemäß umzusetzen. Im Notfall kann man den Murks auch noch später korrigieren.

zurück zum vorherigen Abschnitt