(PHP 4, PHP <=5.2.0)
ifx_query — Schickt eine Informix Abfrage an den Server
$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).
Beispiel #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);
?>
Beispiel #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(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);
?>
Siehe auch: ifx_connect().