Tach!
mal ne kurze Frage zu PHPs PDO.
Ich schreib ja das Statement nur einmal und kann dann, je nach Treiber, auf verschiedenen Datenbank zugreifen.
PDO vereinheitlicht nur den Zugriff auf verschiedene DBMS, ansonsten musst du für jedes DBMS deren speziellen Funktionen verwenden. Und diese haben sich ziemlich uneinheitlich entwickelt. Andererseits braucht man (selten meist) auch mal spezielle Funktioen um bestimmte Features des DBMS ansprechen zu können. Insofern sind DBMS-spezifische Funktionen nicht ganz unnütz.
Haben jetzt die Datenbanken alle die gleiche Syntax (hab mich bisher nur mit MySQL und oberflächlich mit PostgreSQL beschäftigt) oder wird die intern umgeschrieben? Oder muss ich Datenbankspezifische Abfragen schreiben?
Natürlich nicht, nein und jein. Jedes DBMS hat zumindest verschiedene Zusätze zum SQL-Standard. Es gibt eine gemeinsame Basis, mit der man die RUDI/CRUD-Funktionalität dialektübergreifend hinbekommt. Aber wenn es ans Eingemachte mit einer komplexen SQL-Query gehen soll, kommt man schnell an die Stelle, an der man DBMS-Spezifika einsetzt. Und das war's dann mit der Interoperabilität. PDO jedenfalls reicht die Querys einfach nur durch. Es nimmt keine Vereinheitlichung auf Statementbasis vor. Lediglich bei Prepared Statements greift es ein und stellt diese Funktionalität auch den Systemem zur Verfügung, die das nicht können. Wobei ich nicht weiß, ob es mittlerweile auch vereinheitlicht, dass einige Systeme namensbasiert binden können (:foo, :bar), andere nur positionsorientiert (?, ?).
Im letzten Fall macht ja das Konzept nur wenig Sinn.
Es vereinheitlicht und vereinfacht teilweise den Zugriff. Das ist schon viel wert, wenn du mehrere DBMS unterstützen willst. Oder du willst bei deinen Projekten mal MySQL, mal SQLite verwenden, dann freut es dich sicher auch, dass du nicht zwei (oder mehr) verschiedene Funktionssammlungen verwenden musst.
dedlfix.