PEAR-Handbuch | ||
---|---|---|
Zurück | Nach vorne |
Jedes Datenbank-Management-System (DBMS) hat seine eigenen Verhaltensweisen, trotz des gemeinsamen SQL-Standards. Z.B. einige Datenbanken geben den Spaltennamen in Großbuchstaben aus, andere in Kleinbuchstabe, und manche wie er definiert wurde. Diese Eigenarten erschweren die Kompatibilität von Skripten zwischen verschieden DBMS. PEAR::DB bemüht sich dieses Unterschiede zu minimieren, damit Programme unter verschiedenen DBMS funktionieren.
Sie können den Portabilitäts-Modus mit der Konfigurations-Option portability aktivieren. Diese können Sie bei der Methode connect() setzen oder über die setOption()-Methode.
Es stehen verschieden Modi zur Verfügung, die miteinander bei Bit-Verknüpfung kombiniert werden können. Dazu benutzen Sie das Zeichen | zum verknüpfen und das Zeichen ^ um einen Modus zu entfernen. Weiter unten finden Sie einige Beispiele, die dies zeigen.
DB_PORTABILITY_ALL
Aktiviert alle Portabilitäts-Funktionen
DB_PORTABILITY_DELETE_COUNT
Erzwingt die Rückmeldung, wieviele Datensätze gelöscht wurden. Einige DBMS geben nicht die Anzalh gelöschter Datensätze zurück, wenn eine einfache DELETE FROM tablename-Abfrage durchgeführt wurde. Dieser Modus ergänzt bei Löschabfragen einfach WHERE 1=1 am Ende der Abfrage, da diese dann die Anzahl zurückliefern.
DB_PORTABILITY_ERRORS
Gleicht die Fehlermeldung bestimmter Treiber denen anderer DBMS an.
Tabelle 34-1. Neuzuweisung der Fehlermeldungen
Treiber | Beschreibung | Alte Konstante | Neue Konstante |
---|---|---|---|
mysql, mysqli | Unique und PrimaryKey Contraints | DB_ERROR_ALREADY_EXISTS | DB_ERROR_CONSTRAINT |
mysql, mysqli | Not-null Constraints | DB_ERROR_CONSTRAINT | DB_ERROR_CONSTRAINT_NOT_NULL |
odbc(access) | Mircosofts ODBC-Treiber liefert bei der Fehlermeldung no such field fälschlicherweise den Fehlercode 07001, was aber bedeutet too few parameters. | DB_ERROR_MISMATCH | DB_ERROR_NOSUCHFIELD |
DB_PORTABILITY_LOWERCASE
Konvertiert die Tabellennamen und Felder immer zu Kleinbuchstaben, wenn auf sie per get*(), fetch*() oder tableInfo() zugegriffen wird.
DB_PORTABILITY_NONE (default)
Schaltet die Portabilitäts-Funktionen aus.
DB_PORTABILITY_NULL_TO_EMPTY
Konvertiert null-Werte in leere Zeichenkette bei der Rückgabe über get*() und fetch*(). Dies ist für Oracle notwendig, da es leere Zeichenkette als null-Wert interpretiert, während andere dazwischen unterscheiden.
DB_PORTABILITY_NUMROWS
Benötigt, damit numRows() in Oracle funktioniert.
DB_PORTABILITY_RTRIM
Beschneidet Leerzeichen am Ende der Daten, die per get*() und fetch*() geholt werden.
Einige Funktionen wurden bereits über die optimize-Option aktiviert, diese sollte aber nicht mehr verwendet werden. Wenn diese Option mit dem Wert portability aufgerufen wird, werden bei den folgenden Datenbanken diese Modi angestellt:
oci8: DB_PORTABILITY_LOWERCASE und DB_PORTABILITY_DELETE_COUNT
fbsql, mysql, mysqli, sqlite: DB_PORTABILITY_DELETE_COUNT
Wenn die optimize-Option auf performance gestellt wird, wird der Portabilitäts-Modus auf DB_PORTABILITY_NONE gesetzt.
Beispiel 34-1. Alle Optionen anschalten beim Verbindungsaufbau
|
setOption() benutzen, um die Portabilität für vollständige Kleinschreibung und Beschneidung einzuschalten.
Beispiel 34-2. setOption 1
|
setOption() benutzen, um alle Portabilitätsmodi anzuschalten, mit der Ausnahme der Beschneidung.
Beispiel 34-3. setOption 2
|
Zurück | Zum Anfang | Nach vorne |
Einführung - autoPrepare & autoExecute | Nach oben | Einführung - Sequenzen |