Moin Moin!
Sowohl Strip als auch das Zitat! Was ich da baue ist nur für den internen Gebrauch, da müßte schon ein sehr guter KollegeIn injecten,
Erstens muß es ja gar nicht absicht sein, einmal falsch Copy&Paste und das Unglück ist passiert.
Und zweitens kommen gerüchteweise die meisten Angriffe auf Firmensysteme von INNEN. Manche pinkeln in die Kaffeekanne, andere hinterlassen Malware. Und wieder andere demolieren einfach alles, was ihnen in die Finger kommt.
Ein wenig Mißtrauen gegenüber dem User schadet nicht. Und insbesondere nicht in Netzwerken. Daher: 1039. Selbst wenn man nur für sich selbst schreibt.
aber ich werd mir das mit den Platzhaltern auf jeden Fall anschauen.
Was ist denn mit "Some drivers support placeholders and bind values" gemeint?
(Zitat aus der DBI-Doku)
Das bezieht sich nach meinem Verständnis eher auf die (Hersteller-)Treiber der jeweiligen Datenbank denn auf DBI oder die DBI-Datenbank-Treiber (DBD::*). Nicht jede Datenbank-Schnittstelle unterstützt Platzhalter, einigen wenigen muß man tatsächlich jedes Mal einen einzelnen String mit SQL und Werten übergeben. Andere kennen außer positionierten Parametern auch noch benannte Parameter, wieder andere kennen NUR benannte Parameter. Aber das schöne am DBI ist, dass man sich darum ÜBERHAUPT NICHT kümmern muß, wenn man brav die Fragezeichen als positionierte Platzhalter benutzt. Die Kombination aus DBI und dem Datenbank-spezifischen DBD::irgendwas kümmert sich darum, dass die Fragezeichen ggf. durch passend gequotete Werte, benannte Platzhalter oder andere positionierte Platzhalter ersetzt werden, KOMPLETT TRANSPARENT natürlich.
Das ist überhaupt der riesige Pluspunkt beim DBI: Es ist (bis auf Details des jeweiligen SQL-Dialekts und DB-spezifische Besonderheiten wie Large Objects, Sequenzen und automatisch vergebene IDs) vollkommen egal, mit welcher Datenbank (angefangen bei CSV-Dateien und Berkeley-Datenbanken über SQLite, MySQL, bis hin zu High-End-Datenbanken wie PostgreSQL, DB2, Oracle) man arbeitet. Außerdem gibt es "Brücken" zu ODBC (was wiederum tonnenweise RDBMS anbindet, mit etwas mehr Overhead) und JDBC, und zwei verschiedene Proxy-DBDs, um über Host- und Plattform-Grenzen hinweg an plattformspezifische DBDs anzudocken (z.B. mit BSD oder Linux auf eine Access-DB unter Windows, via Proxy und ODBC).
Egal wie man an die jeweilige Datenbank kommt, die DBI-Schnittstelle zum Programm hin bleibt unverändert, nur die Parameter für die connect()-Methode (Datenbank, Username, Passwort) müssen verändert werden.
PHPs PDO ist ein schwacher Abklatsch des DBI, mehr Schreibarbeit für weniger unterstützte Datenbanken. Aber immerhin kann PDO auch mit Platzhaltern umgehen.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".