Forum und email

ifx_query

(No version information available, might be only in CVS)

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 sollten 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).

Example#1 Gibt alle Zeilen der "orders"-Tabelle als HTML-Tabelle zurück

<?php
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);
?>

Example#2 Ein paar Werte in die "catalog"-Tabelle einfügen

<?php
// blob id's für byte- und text-Spalten erzeugen
$textid ifx_create_blob(00"Text Spalte im Speicher");
$byteid ifx_create_blob(10"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);
?>

Siehe auch: ifx_connect().