Der-Dennis: PHP SQL Statements

Beitrag lesen

Hallo MB,

Im besten Fall nimmst Du wohl keine der beiden Varianten:

  1. Stringverkettungen sind meistens schlecht lesbar. Wenn Du eh objektorientiert arbeitest, dann schreibe Dir Klassen, welche diese Verkettungen übernehmen können.

Ok jetzt steh ich auf dem Schlauch. Was meinst du mit String-Verkettung über Klassen?

kann ich verstehen, dass Du auf dem Schlauch stehst. Da hab ich mich ziemlich blöd ausgedrückt. Sorry.

Ohne Stringverkettung geht es natürlich nicht. Es gibt nur Möglichkeiten, dass Du das komplette SQL-Statement mit Hilfe von Methoden einer Klasse zusammen baust. Das ist zwar immer noch eine Verkettung von Strings, aber deutlich übersichtlicher, weil die Verkettung an sich oft nur wenige kurze Strings zusammensetzt. Von außen betrachtet erkennt man dann die interne Funktionsweise nicht mehr. Vielmehr ruft man dann Methoden wie

$sql->select()->from(...)->where(...)->order(...)

auf. Einige Frameworks machen das so mit Hilfe eines zusätzlichen Layers. Ob man das braucht, sei dahingestellt. Es erleichtert einem aber oft die Arbeit, wenn man sich nicht immer um die gleichen Dinge wie Kontextbehandlung kümmern muss. Wenn Dich das interessiert, schau Dir mal aktuelle Frameworks an und wie die das machen.

Unabhängig davon macht PDO schon einiges von dem. Das ist ja auch sowas wie ein zwischengeschalteter Layer.

  1. Verwende so etwas wie PDO, damit hast Du einige der zuvor genannten Probleme bereits erschlagen.

Jo ich arbeite nur mit PDO

Ok, das ist schon mal gut. Kennst Du denn die verschiedenen bind()-Funktionen von PDO? Wenn ja, bräuchtest Du Dir Deine ursprüngliche Frage nicht stellen, da Du dann Platzhalter (ähnlich Deiner ersten Variante) verwenden würdest.

Klar ist aber, dass eine zusätzliche "Schicht" wie PDO immer etwas langsamer sein wird. Das ist im normalen Betrieb aber kein Problem.

Falls was unklar ist, frag einfach nach.

Gruß
Dennis