fk: Zentrale Funktion für DB Zugiff - Macht das Sinn?

Beitrag lesen

  • Eine ausgelagerte PHP-Funktion soll 90% aller DB Zugriffe steuern. Lediglich Spezialfälle (wie 'join', etc.) sollen nicht berücksichtigt werden.

90% oder alle?

  • Der Funktion möchte ich einfach nur den Tabellennamen, die Felder und den Vergleichsoperator ("Where") übergeben.

  • Zurückbekommen möchte ich dann, gefüllte Variablen (Name = Feldname)

soll dies eine db-schnittstelle werden? oder business-logik? db abstraktionen gibts etliche.

Macht so etwas Sinn? Habt jemand so was schon gemacht und kann mir zur Ideenfindung mal sein Script zeigen?

ist vielleich ein bischen vielle, aber evtl. ein gedankenansatz:

<?php // * class SQL.php * // Klasse für SQLObjekt echo('<!-- '.FILE.'['.LINE.'] -->'."\r\n"); // require_once ('./php/Klassen/Objekt.php'); // class SQL EXTENDS Objekt {     //     var $COLUMNS;     var $TABLE;     var $WHERE;     var $GROUP_BY;     var $ORDER_BY;     //     var $SQL;     //     function &SQL($DatenObjekt = NULL) {     }     //     function nimmCOLUMNS($COLUMNS = NULL) {     }     //     function nimmWHERE($WHERE = NULL) {     //     function nimmGROUP_BY($GROUP_BY = NULL) {         $this->GROUP_BY = $GROUP_BY;     }     //     function nimmORDER_BY($ORDER_BY = NULL) {         $this->ORDER_BY = $ORDER_BY;     }     //     function &SELECT($SpaltenListe = NULL) {     //     function &INSERT($SpaltenListe = NULL) {     }     //     function &UPDATE($SpaltenListe = NULL) {     //     function &DELETE($WHERE = NULL) {     }     // } ?>


<?php // * class MySQL.php * // Klasse für MySQLObjekt echo('<!-- '.FILE.'['.LINE.'] -->'."\r\n"); // require_once ('./php/Klassen/SQL/SQL.php'); // class MySQL EXTENDS SQL {     //     var $ConnectionID;     var $Database;     var $affected_rows;     var $errno;     var $error;     var $LIMIT;     var $num_rows;     var $result;     //     function &MySQL($Host = NULL, $User = NULL, $Password = NULL, $Database = NULL) {         return $this->ConnectionID;     }     //     function &connect($Host = NULL, $User = NULL, $Password = NULL, $neueVerbindung = NULL) {         //return $this->ConnectionID = mysql_connect($Host, $User, $Password, $neueVerbindung);         return $this->ConnectionID = mysql_pconnect($Host, $User, $Password, $neueVerbindung);     }     //     function &select_db($Database = NULL) {     }     //     function &close() {         echo('<!-- '.CLASS.'->close('.')['.LINE.'] -->'."\r\n");         if ($this->ConnectionID) {             $this->ConnectionID = mysql_close($this->ConnectionID);             $this->ConnectionID = NULL;         }         return $this->ConnectionID;         $this->errno = mysql_errno($this->ConnectionID);         $this->error = mysql_error($this->ConnectionID);     }     //     function &query($SQL = NULL, $ConnectionID = NULL) {         return $this->result;     }     //     function &fetch_object($result = NULL) {         echo('<!-- '.CLASS.'->fetch_object('.$result.')['.LINE.'] -->'."\r\n");         if (isset($result)) {             return mysql_fetch_object($result);         }         return mysql_fetch_object($this->result);     }     //     function &nimmLIMIT($LIMIT = NULL) {         echo('<!-- '.CLASS.'->nimmLIMIT('.$LIMIT.')['.LINE.'] -->'."\r\n");         $this->LIMIT = $LIMIT;     }     //     function &SELECT($Tabelle = NULL, $LIMIT = NULL) {         echo('<!-- '.CLASS.'->SELECT('.$Tabelle.', '.$LIMIT.')['.LINE.'] -->'."\r\n");         }         return $Liste;     }     //     function &INSERT($SpaltenListe = NULL) {         return $result;     }     //     function &UPDATE($SpaltenListe = NULL) {         return $result;     }     //     function &DELETE($WHERE = NULL) {         return $result;     }     // } ?>


<?php // * class DB2.php * // Klasse für DB2Objekt echo('<!-- '.FILE.'['.LINE.'] -->'."\r\n"); // require_once ('./php/Klassen/SQL/SQL.php'); // class DB2 EXTENDS SQL {     //     var $ConnectionID;     var $Database;     var $error;     var $errormsg;     var $FETCH_FIRST_ROWS_ONLY;     var $num_rows;     var $result;     //     function &DB2($Database = NULL, $User = NULL, $Password = NULL) {         parent::__construct();         return $this->open(&$Database, &$User, &$Password);     }     //     function &open($Database = NULL, $User = NULL, $Password = NULL) {         return $this->ConnectionID;     }     //     function &connect($Database = NULL, $User = NULL, $Password = NULL) {         echo('<!-- '.CLASS.'->connect('.$Database.', User, Password'.')['.LINE.'] -->'."\r\n");         if (isset($_ENV['OS'])) {             if ($_ENV['OS'] == 'Windows_NT') {                 $Host = 'Windows';             }         }         if (isset($_ENV['OSTYPE'])) {             if ($_ENV['OSTYPE'] == 'linux') {                 $Host = 'Linux';             }         }         switch ($Host) {             case 'Windows' :                 return odbc_connect($Database, $User, $Password, SQL_CUR_USE_ODBC); // mit ODBC Manager (WINDOWS)             case 'Lnx13' :             case 'Linux' :                 return odbc_connect($Database, $User, $Password); // ohne ODBC Manager (LINUX)         }     }     //     function &close() {         echo('<!-- '.CLASS.'->close('.')['.LINE.'] -->'."\r\n");         return odbc_close($this->ConnectionID);     }     //     function &exec($ConnectionID = NULL, $SQL = NULL) {         echo('<!-- '.CLASS.'->exec('.$ConnectionID.', '.$SQL.')['.LINE.'] -->'."\r\n");         $sql = parent::SELECT();         if ($this->FETCH_FIRST_ROWS_ONLY <> '') {             $sql .= ' FETCH FIRST '.$this->FETCH_FIRST_ROWS_ONLY.' ROWS ONLY';         }     }     //     function &nimmFETCH_FIRST_ROWS_ONLY($FETCH_FIRST_ROWS_ONLY = NULL) {         echo('<!-- '.CLASS.'->nimmLIMIT('.$FETCH_FIRST_ROWS_ONLY.')['.LINE.'] -->'."\r\n");         $this->FETCH_FIRST_ROWS_ONLY = $FETCH_FIRST_ROWS_ONLY;     }     //     function &SELECT($Tabelle = NULL, $FETCH_FIRST_ROWS_ONLY = NULL) {         echo('<!-- '.CLASS.'->SELECT('.$Tabelle.', '.$FETCH_FIRST_ROWS_ONLY.')['.LINE.'] -->'."\r\n");     }     //     function &INSERT($SpaltenListe = NULL) {         $sql = parent::INSERT(&$SpaltenListe);         $result = odbc_exec($this->ConnectionID, $sql);         $this->error = odbc_error($this->ConnectionID);         $this->errormsg = odbc_errormsg($this->ConnectionID);         return $result;     }     //     function &UPDATE($SpaltenListe = NULL) {         $result = odbc_exec($this->ConnectionID, $sql);         $this->error = odbc_error($this->ConnectionID);         $this->errormsg = odbc_errormsg($this->ConnectionID);         return $result;     }     //     function &DELETE($WHERE = NULL) {         return $result;     }     // } ?>


ich mußte leider rigoros kürzen, da zu lang. mit MySQL = new MySQL() kannst du dann ein objekt für mysql dbs erstellen.

viel spaß beim wurschteln.