phpbar.de logo

Mailinglisten-Archive

[php] Welche DB Abstraktion?

[php] Welche DB Abstraktion?

Ron Opitz php_(at)_phpcenter.de
Fri, 16 Nov 2001 11:46:26 +0100


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