Der Informix-Treiber für Informix (IDS) 7.x, SE 7.x, Universal
Server (IUS) 9.x und IDS 2000 ist in "ifx.ec" und "php3_ifx.h" im
Verzeichnis der Informix Erweiterung implementiert. Die Unterstützung
für IDS 7.x ist mit der vollen Unterstützung für TEXT- und BYTE-Felder
ziemlich vollständig. Die Unterstützung von IUS 9.x ist nur teilweise
fertig: die neuen Datentypen gibt es zwar, aber die Unterstützung von
SLOB- und CLOB-Datentypen ist noch in Arbeit.
Anforderungen
Hinweis:
Bemerkungen zur Konfiguration
Sie brauchen ESQL/C, um den PHP Informix-Treiber zu kompilieren.
ESQL/C Versionen ab 7.2x sollten genügen. ESQL/C ist jetzt Teil des
Informix Client SDK.
Versichern Sie sich, dass die Variable "INFORMIXDIR" gesetzt ist
und dass Sie $INFORMIXDIR/bin in Ihren Pfad eingebunden haben, bevor
Sie das "configure" Skript aufrufen.
Installation
Um die Funktionen dieses Moduls benutzen zu können, müssen Sie Ihren
PHP-Interpreter mit der Option --with-informix[=DIR] kompilieren.
DIR ist das Basis-Installationsverzeichnis von Informix, das in der
Standardeistellung leer ist.
Laufzeit Konfiguration
Das Verhalten dieser Funktionen wird
durch Einstellungen in der php.ini beeinflusst.
Hinweis:
Die Umgebungsvariablen INFORMIXDIR und INFORMIXSERVER müssen für den
PHP-Treiber verfügbar sein und das INFORMIX bin-Verzeichnis muss im
Pfad enthalten sein. Prüfen Sie diese Voraussetzungen mit einem Skript,
das einen Aufruf von phpinfo() enthält, bevor Sie
testen. Die Ausgabe von phpinfo() sollte diese
Umgebungsvariablen auflisten. Dies ist sowohl für CGI PHP als auch
Apache mod_php TRUE. Möglicherweise müssen Sie diese
Umgebungsvariablen in Ihrem Apache Startskript setzen.
Die Informix shared libraries sollten für den Lader ebenfalls verfügbar
sein (überprüfen Sie den LD_LIBRARY_PATH oder ld.so.conf/ldconfig).
Hinweis:
Einige Anmerkungen zum Gebrauch von BLOBs (TEXT- und BYTE Felder)
BLOBs werden normalerweise durch blob-Identifikatoren adressiert.
Select Abfragen geben eine "blob-ID" für alle TEXT- und BYTE-Felder
zurück. Sie können die Inhalte mit "string_var =
ifx_get_blob($blob_id);" auslesen, falls Sie die
BLOBS in den Speicher schreiben möchten (mit "ifx_blobinfile(0);").
Wenn Sie die Inhalte von BLOB-Felder lieber in eine Datei ausgeben
möchten, benutzen Sie "ifx_blobinfile(1);" und mit
"ifx_get_blob($blob_id);" ermitteln Sie den Dateinamen. Mit den
normalen I/O-Routinen des Dateisystems erhalten Sie die Inhalte von
BLOBs.
Bei insert/update Abfragen müssen Sie diese "blob-ID's" mit der
Funktion ifx_create_blob() selber erzeugen.
Danach schreiben Sie die blob-ID's in ein Array und ersetzen die
BLOB-Felder durch ein Fragezeichen (?) im Abfragestring. Für die
Inhalte der BLOBs, die mit der Funktion
ifx_update_blob() gesetzt werden, sind Sie bei
updates/inserts selber verantwortlich.
Das Verhalten einer BLOB-Spalte kann auch zur Laufzeit durch
Konfigurationsvariablen verändert werden.
Konfigurationsvariable: ifx.textasvarchar
Konfigurationsvariable: ifx.byteasvarchar
Laufzeitfunktionen:
ifx_textasvarchar(0): benutzt bei SELECT Abfragen von TEXT-Feldern die blob-ID
ifx_byteasvarchar(0): benutzt bei SELECT Abfragen von BYTE-Feldern die blob-ID
ifx_textasvarchar(1): gibt TEXT-Felder so zurück, als wären es VARCHAR Felder, so dass Sie keine blob-ID für select Abfragen brauchen.
ifx_byteasvarchar(1): gibt BYTE-Felder so zurück, als wären es VARCHAR Felder, so dass Sie keine blob-ID für select Abfragen brauchen.
Konfigurationsvariable: ifx.blobinfile
Laufzeitfunktionen:
ifx_blobinfile_mode(0): gibt BYTE-Felder in den Speicher zurück, mit
der blob-ID können Sie auf den Inhalt zugreifen.
ifx_blobinfile_mode(1): gibt BYTE-Felder in einer Datei zurück, mit
der blob-ID können Sie den Dateinamen ermitteln.
Wenn Sie ifx_text/byteasvarchar auf 1 setzen, können Sie TEXT- und
BYTE-Felder in select Abfragen genauso benutzen, wie normale
(allerdings sehr lange) VARCHAR-Felder. Da alle Zeichenketten in PHP
"gezählt" werden, bleibt dies "binary safe". Es bleibt Ihnen
überlassen, korrekt damit umzugehen. Die zurückgegebenen Daten können
alles mögliche enthalten, so dass Sie für die Inhalte verantwortlich
sind.
Wenn Sie ifx_blobinfile auf 1 setzen, benutzen Sie den Dateinamen, der
von ifx_get_blob(..) zurückgegeben wird, um auf den Inhalt des BLOB
zuzugreifen. Beachten Sie, dass Sie in diesem Fall FÜR DAS LÖSCHEN DER
TEMPORÄREN DATEIEN, DIE VON INFORMIX ERSTELLT WERDEN VERANTWORTLLICH
SIND, wenn sie ein Tupel auslesen. Jedes neue Tupel, das gelesen wird,
erzeugt für jedes BYTE-Feld eine neue temporäre Datei.
Der Speicherort für die temporären Dateien kann mit der
Umgebungsvariablen "blobdir" beeinflusst werden, die
Standardeinstellung ist "." (das aktuelle Verzeichnis). Etwas Ähnliches
wie : putenv(blobdir=tmpblob"); erleichtert das Bereinigen der
temporären Dateien, die versehentlich stehen geblieben sind (ihre Namen
beginnen alle mit "blb").
Hinweis:
Automatisches Abschneiden von Leerzeichen bei "char" (SQLCHAR und
SQLNCHAR) Daten
Dies kann mit einer Konfigurationsvariablen eingestellt werden.
ifx.charasvarchar : falls auf 1 gesetzt, werden abschliessende
Leerzeichen automatisch abgeschnitten. Dies erspart den Aufruf der
chop() Funktion.
Hinweis:
NULL-Werte
Wenn die Konfigurationsvariable ifx.nullformat (und die
Laufzeitfunktion ifx_nullformat()) auf TRUE
gesetzt sind, werden NULL-werte in Spalten als Zeichenkette NULL
zurückgegeben, wenn die Variable auf FALSE gesetzt ist, werden leere
Strings für NULLwerte zurückgegeben. So können sie zwischen
NULLwerten und leeren Spalten unterscheiden.
Informix Konfigurationsoptionen
Name
Standardwert
Änderbar
Changelog
ifx.allow_persistent
"1"
PHP_INI_SYSTEM
ifx.max_persistent
"-1"
PHP_INI_SYSTEM
ifx.max_links
"-1"
PHP_INI_SYSTEM
ifx.default_host
NULL
PHP_INI_SYSTEM
ifx.default_user
NULL
PHP_INI_SYSTEM
ifx.default_password
NULL
PHP_INI_SYSTEM
ifx.blobinfile
"1"
PHP_INI_ALL
ifx.textasvarchar
"0"
PHP_INI_ALL
ifx.byteasvarchar
"0"
PHP_INI_ALL
ifx.charasvarchar
"0"
PHP_INI_ALL
ifx.nullformat
"0"
PHP_INI_ALL
Weitere Details und die Definitionen der
PHP_INI_*-Konstanten finden Sie im php.ini Einstellungen.
Hier eine kurze Erklärung der
Konfigurationsoptionen:
Der Standardhost, zu dem verbunden wird, wenn kein Host in ifx_connect() oder
ifx_pconnect() angegeben wurde. Diese Einstellung
kann im Safe Mode nicht verwendet werden.
Der Standardbenutzer, wenn kein Benutzer in ifx_connect() oder
ifx_pconnect() angegeben wurde. Diese Einstellung
kann im Safe Mode nicht verwendet werden.
Das Standardpasswort, wenn kein Passwort in ifx_connect() oder
ifx_pconnect() angegeben wurde. Diese Einstellung
kann im Safe Mode nicht verwendet werden.
TRUE, falls blob-Spalten in eine Datei ausgegeben werden sollen,
FALSE, falls blob-Spalten in den Speicher ausgegeben werden sollen.
Sie können diese Einstellung mit der Funktion
ifx_blobinfile_mode() zur Laufzeit ändern.
TRUE, falls text-Spalten in select Abfragen als normale Strings
zurückgegeben werden sollen. FALSE, falls Sie blob-ID Parameter
benutzen wolen. Sie können diese Einstellung mit der Funktion
ifx_textasvarchar() zur Laufzeit ändern.
TRUE, falls BYTE-Spalten in select Abfragen als normale Strings
zurückgegeben werden sollen. FALSE, falls Sie blob-ID Parameter
benutzen wolen. Sie können diese Einstellung mit der Funktion
ifx_textasvarchar() zur Laufzeit ändern.
TRUE, falls der Spaltenwert NULL als Literal "NULL"
zurückgegeben werden soll. FALSE, falls für Nullwerte als leere
Strigs "" zurückgegeben werden sollen. Sie können diese Einstellung
mit der Funktion ifx_nullformat() zur Laufzeit
ändern.
Resource Typen
Vordefinierte Konstanten
Diese Erweiterung definiert keine Konstanten.
Inhaltsverzeichnis
ifx_affected_rows — Gibt die Anzahl der Datensätze zurück, die von einer Abfrage betroffen sind
ifx_blobinfile_mode — Setzt den Standardmodus für BLOBs bei allen SELECT Abfragen