phpbar.de logo

Mailinglisten-Archive

[php] Datenbankabstraktionsschichten und SQL - und PHP ;-)

[php] Datenbankabstraktionsschichten und SQL - und PHP ;-)

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Don Feb 24 12:16:44 CET 2005


Hallo Thorsten,

Thorsten Koch schrieb:
> wir wollen in der zweiten Version eines Projektes jetzt auch einen
> Datenbank-Abstraktionslayer verwenden. Und Überlegungen, die Du
> angestellt hast, sind uns natürlich auch nicht fremd.

:-)


> Der
> Abstraktionslayer muss solche Funktionen bieten, wie einen WHERE-Clause
> aus einem Array zu erstellen und das nicht zu kompliziert. Da sollten
> dann natürlich nicht nur Vergleiche wie "=" möglich sein, sondern auch
> LIKE und <> und > oder < und so weiter.
> Natürlich sollten auch irgendwie JOINs möglich sein.

Ja, das ist nämlich ein wichtiger Punkt. Die Abstraktionsschicht sollte
den SQL-Befehl aus übergebenen Werten zusammenbauen und nicht schon SQL
übergeben bekommen, auch nicht SQL mit Platzhaltern. Das Problem ist nur -
aber vielleicht bin ich blind - ich habe solch eine weitgehende
Abstraktion nur bei PEAR DB gefunden:

     http://pear.php.net/manual/en/package.database.db-dataobject.php

Wie löst man das also mit ADOdb oder Creole? Bei Creole gibt es z.B.
set...()-Funktionen, aber das ist doch nur der halbe Weg zum Ziel:

     $stmt = $conn->prepareStatement("INSERT INTO users (name, passwd)
VALUES (:name, :pass)");
     $stmt->setString(":name", $name);
     $stmt->executeUpdate();

     -> http://creole.phpdb.org/docs/api/creole/PreparedStatement.html

ADOdb hat z.B. GetUpdateSQL() und GetInsertSQL(), aber was ist mit
GetSelectSQL() etc.:

     -> http://phplens.com/lens/adodb/docs-adodb.htm#getupdatesql


> Ich kann ja in 2-3 Monaten mal von den Erfahrungen mit der
> Datenbankabstraktion berichten und sagen, ob wir uns für ADODB oder
> Creole (siehe letztes PHP Magazin) entschieden haben.

Ja, das wäre interessant zu erfahren. :-) Warum zieht Ihr PEAR DB oder MDB
nicht in Betracht? Und welche Vorteile seht Ihr jeweils bei ADOdb und
Creole?


Viele Grüße

Lutz


php::bar PHP Wiki   -   Listenarchive