ifx_query

(PHP 3 >= 3.0.3, PHP 4, PHP 5)

ifx_query -- Schickt eine Informix Abfrage an den Server

Beschreibung

int ifx_query ( string query, int link_identifier [, int cursor_type [, mixed blobidarray]] )

Gibt bei Erfolg einen positiven Integerwert als Ergebniskennung zurück oder FALSE, falls ein Fehler auftrat.

Die Ergebniskennung, "result-id", wird von anderen Funktionen benutzt. Die Zahl der betroffenen Zeilen wird für spätere Abfragen mit ifx_affected_rows() gesetzt.

ifx_query() schickt eine Abfrage an die gegenwärtig aktive Datenbank auf dem Server, die durch die angegebene Verbindungskennung bezeichnet wird.

Auf der Verbindung conn_id wird eine query ausgeführt. Bei SELECT-Abfragen wird ein Cursor deklariert und geöffnet. Mit dem optionalen Parameter cursor_type können Sie bestimmen, ob dies ein "scroll"- und/oder ein "hold"-Cursor sein soll. Dies ist eine Bitmaske, die entweder die Werte IFX_SCROLL, IFX_HOLD oder beides (mit OR verknüpft) annehmen kann. Andere Abfragen auuser SELECTs werden unverzüglich ausgeführt. IFX_SCROLL und IFX_HOLD sind symbolische Konstanten und als solche sollten sie nicht in Anführungszeichen eingeschlossen werden. Wenn Sie den Parameter weglassen, definieren Sie einen ganz normalen sequentiellen Cursor.

Für jeden Abfragetyp wird die Anzahl der betroffenen Zeilen (geschätzt oder wirklich) für spätere Abfragen mit ifx_affected_rows() gespeichert.

Falls Sie BLOB-Felder (BYTE oder TEXT) in einem UPDATE haben, können Sie den Parameter blobidarray benutzen, der die entsprechenden blob-ids enthält und Sie sollten diese Felder in der Abfrage durch "?" ersetzen.

Falls der Inhalt der TEXT- (oder BYTE) Spalte es erlaubt, können Sie auch "ifx_textasvarchar(1)" und "ifx_byteasvarchar(1)" benutzen. Damit können Sie TEXT- oder BYTE-Felder behandeln, als wären sie normale (nur sehr lange) VARCHAR-Felder in SELECT-Abfragen und Sie brauchen sich nicht um blob-ids kümmern.

Mit ifx_textasvarchar(0) oder ifx_byteasvarchar(0) (der Standardeinstellung) werden für BLOB-Spalten in SELECT-Abfragen die blob-ids (Integerwerte) zurückgegeben. Sie können die Inhalte der BLOBs mit den BLOB-Funktionen als Zeichenketten oder Dateien erhalten (siehe weiter unten) .

Siehe auch: ifx_connect().

Beispiel 1. Gibt alle Zeilen der "orders"-Tabelle als HTML-Tabelle zurück

ifx_textasvarchar(1);      // "text mode" bei blobs benutzen
$res_id = ifx_query("select * from orders", $conn_id);
if (! $res_id) {
    printf("Kann orders nicht abfragen: %s\n<br>%s<br>\n", ifx_error());
    ifx_errormsg();
    die;
}
ifx_htmltbl_result($res_id, "border=\"1\"");
ifx_free_result($res_id);

Beispiel 2. Ein paar Werte in die "catalog"-Tabelle einfügen

// blob id's für byte- und text-Spalten erzeugen
$textid = ifx_create_blob(0, 0, "Text Spalte im Speicher");
$byteid = ifx_create_blob(1, 0, "Byte Spalte im Speicher");
                   // blob id's in einem blobid array speichern
$blobidarray[] = $textid;
$blobidarray[] = $byteid;
                      // Abfrage ausführen
$query = "insert into catalog (stock_num, manu_code, " .
         "cat_descr,cat_picture) values(1,'HRO',?,?)";
$res_id = ifx_query($query, $conn_id, $blobidarray);
if (! $res_id) {
  ... Fehler ...
}
                     // Speicher freigeben
ifx_free_result($res_id);

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 17:57:01