ifx_query

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)

 
;