Google

NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7">

XLIII. Informix Funktionen

Einführung

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

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

Anmerkung: Das Konfigurationsskript findet die Bibliotheken und Include-Verzeichnisse selbständig, wenn Sie configure mit der Option --with_informix=yes aufrufen. Sie können diese automatische Erkennung überschreiben, wenn Sie in der Systemumgebung "IFX_LIBDIR", "IFX_LIBS" und "IFX_INCDIR" setzen. Das Konfigurationsskript wird ebenso versuchen, die Version Ihres Informix Servers zu erkennen. Es setzt die Variable "HAVE_IFX_IUS" für eine bedingte Kompilation, falls Ihre Version >= 9.00 ist.

Laufzeit Konfiguration

Das Verhalten dieser Funktionen wird von Einstellungen in der php.ini bestimmt.

Anmerkung: 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).

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 angeben, dass 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. Benutzen Sie normale Datei I/O-Routinen, um die Inhalte von BLOBs zu erhalten.

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-Felder die blob-id

ifx_byteasvarchar(0) : benutzt bei SELECT Abfragen von BYTE-Felder 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").

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.

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.

Tabelle 1. Informix Konfigurationsoptionen

NameStandardwertÄnderbar
ifx.allow_persistent"1"PHP_INI_SYSTEM
ifx.max_persistent"-1"PHP_INI_SYSTEM
ifx.max_links"-1"PHP_INI_SYSTEM
ifx.default_hostNULLPHP_INI_SYSTEM
ifx.default_userNULLPHP_INI_SYSTEM
ifx.default_passwordNULLPHP_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 Definitionen der PHP_INI_* Konstanten finden sie bei der Funktion ini_set().

Hier folgt eine kurze Beschreibung der Konfigurationseinstellungen.

ifx.allow_persistent boolean

Bestimmt, ob persistente Verbindungen zugelassen sind.

ifx.max_persistent integer

Gibt die maximale Anzahl persistenter Verbindungen pro Prozess an.

ifx.max_links integer

Gibt die maximale Anzahl der Verbindungen zum Informix Server pro Prozess an, einschliesslich der persistenten Verbindungen.

ifx.default_host string

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.

ifx.default_user string

Der Standardbenutzer, wenn kein Benutzer in ifx_connect() oder ifx_pconnect() angegeben wurde. Diese Einstellung kann im safe mode nicht verwendet werden.

ifx.default_password string

Das Standardpasswort, wenn kein Passwort in ifx_connect() oder ifx_pconnect() angegeben wurde. Diese Einstellung kann im safe mode nicht verwendet werden.

ifx.blobinfile boolean

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.

ifx.textasvarchar boolean

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.

ifx.byteasvarchar boolean

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.

ifx.charasvarchar boolean

TRUE, falls Sie abschliesende Leerzeichen von CHAR Spalten beim Auslesen abschneiden wollen.

ifx.nullformat boolean

TRUE, falls der Spaltenwert NULL als Literal "NULL" zurückgegeben werden soll. FALSE, falls für Nullwerte 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
ifx_byteasvarchar -- Setzt den Standard Byte-Modus
ifx_close -- Schliesst eine Informix Verbindung
ifx_connect -- Öffnet eine Verbindung zu einem Informix Server
ifx_copy_blob -- Dupliziert ein gegebenes BLOB (Binary Large Object)
ifx_create_blob -- Erzeugt ein BLOB (Binary Large Object)
ifx_create_char -- Erzeugt ein Zeichen-Objekt
ifx_do --  Führt eine vorbereitete Abfrage aus
ifx_error -- Gibt den Fehlercode des letzten Informix Aufrufs zurück
ifx_errormsg -- Gibt die Fehlermeldung des zuletzt aufgetretenen Informix Fehlers zurück
ifx_fetch_row -- Holt eine Zeile als aufgezähltes Array
ifx_fieldproperties -- Gibt eine Liste mit den Feldeigenschaften zurück
ifx_fieldtypes -- Gibt eine Liste der Informix SQL Felder zurück
ifx_free_blob -- Löscht ein Blob Objekt
ifx_free_char -- Löscht ein CHAR Objekt
ifx_free_result -- Releases resources for the query
ifx_get_blob -- Return the content of a blob object
ifx_get_char -- Return the content of the char object
ifx_getsqlca --  Get the contents of sqlca.sqlerrd[0..5] after a query
ifx_htmltbl_result --  Formats all rows of a query into a HTML table
ifx_nullformat --  Sets the default return value on a fetch row
ifx_num_fields -- Returns the number of columns in the query
ifx_num_rows -- Count the rows already fetched from a query
ifx_pconnect -- Open persistent Informix connection
ifx_prepare -- Stellt einen SQL Befehl zur späteren Ausführung bereit
ifx_query -- Send Informix query
ifx_textasvarchar -- Set the default text mode
ifx_update_blob -- Updates the content of the blob object
ifx_update_char -- Updates the content of the char object
ifxus_close_slob -- Deletes the slob object
ifxus_create_slob -- Creates an slob object and opens it
ifxus_free_slob -- Deletes the slob object
ifxus_open_slob -- Opens an slob object
ifxus_read_slob -- Reads nbytes of the slob object
ifxus_seek_slob -- Sets the current file or seek position
ifxus_tell_slob -- Returns the current file or seek position
ifxus_write_slob -- Writes a string into the slob object