Mailinglisten-Archive |
Hallo,
ich habe mir so eine Abstraktionsschicht selber geschrieben (noch zu
PHP3-Zeiten). Damit erreiche ich eine große Unabhängigkeit von der
installierten PHP Version auf dem jeweiligen Server. Es ist einwenig
aufwendiger, da bei mir der Programmierer mitdenken muß.
So lagere ich die Anpassungen an den jeweiligen sql-syntax vor der query
in Funktionen aus. Das geschieht zur Zeit für das Datum und Dezimalwerte,
da ja die DBS mit unterschiedlichen Dezimaltennern arbeiten
(Oracle ','; MySQL '.').
Ein Beispiel für die Datumsfunktion:
function datumformatschreiben($cfgbase, $tag, $monat, $jahr) {
if ($cfgbase=="oracle") $datumformat="to_date('$tag.$monat.$jahr',
'DD.MM.YYYY')";
if ($cfgbase=="mysql") $datumformat="'"."$jahr-$monat-$tag"."'";
return $datumformat;
}
Beim Auslesen wird der ermittelte Wert an eine Funktion weitergegeben,
die ihn in ein Array mit fester Struktur presst, dass anschließend
weiterverarbeitet wird.
function datumteilen($cfgbase, $datum) {
if ($cfgbase=="oracle") $dataarray = explode(".", $datum);
if ($cfgbase=="mysql") {
$dat = explode("-", $datum);
$dataarray[0] = $dat[2];
$dataarray[1] = $dat[1];
$dataarray[2] = $dat[0];
}
return $dataarray;
}
Ansonsten benutzte ich den kleinsten gemeinsamen Nenner ANSI SQL 92.
Die Anpassung erfolgt einmalig nur in den Funktionen und das wars dann.
Am schlimmsten ist das erstmalige Anlegen der Tabellen unter dem jeweiligen
DBS. Anschließen kann man ja ein Dump ziehen.
Gruss
Ron Opitz
php::bar PHP Wiki - Listenarchive