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