Mailinglisten-Archive |
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