The 5th Annual China PHP Conference


(PHP 5, PHP 7)

ibase_queryFührt eine Abfrage auf einer InterBase Datenbank aus


resource ibase_query ([ resource $link_identifier ], string $query [, int $bind_args ] )

Führt eine Abfrage auf einer InterBase Datenbank aus.



Eine InterBase Verbindungskennung. Wenn ausgelassen, wird die zuletzt geöffnete Verbindung angenommen.


Eine InterBase Abfrage.



Erzeugt die Abfrage einen Fehler, wird FALSE zurückgegeben. Ist sie erfolgreich und es gibt eine (möglicherweise leere) Ergebnismenge (so wie bei einer SELECT Abfrage), wird eine Ergebniskennung zurückgegeben. War die Abfrage erfolgreich und es gibt keine Ergebnisse, wird TRUE zurückgegeben.


Unter PHP 5.0.0 und höher gibt diese Funktion die Anzahl der Zeilen zurück, die von der Abfrage für INSERT, UPDATE und DELETE Anweisungen betroffen waren. Um die Abwärtskompatibilität zu erhalten, wird TRUE für diese Anweisungen zurückgegeben, wenn die Abfrage erfolgreich war, aber keine Zeilen betraf.


Erhalten Sie Fehlermeldungen wie "arithmetic exception, numeric overflow, or string truncation. Cannot transliterate character between character sets" (diese treten auf, wenn Sie Zeichen mit Akzent verwenden), wenn Sie diese Funktion und ibase_query() verwenden, müssen Sie den Zeichensatz (d.h. ISO8859_1 oder Ihren aktuellen Zeichensatz) einstellen.


Version Beschreibung
5.3.1 Im Erfolgsfall gibt die Funktion nun TRUE zurück, wenn keine Zeilen betroffen waren, wohingegen zuvor 0 (eine Null gefolgt von einem Leerzeichen) zurückgegeben wurde.


Beispiel #1 ibase_query() example



$dbh ibase_connect($host$username$password);
$stmt 'SELECT * FROM tblname';

$sth ibase_query($dbh$stmt) or die(ibase_errmsg());


Siehe auch

add a note add a note

User Contributed Notes 5 notes

chrisg at cordell dot com dot au
12 years ago
Simple function to retrieve the results of an SQL statement into an array, will also cater for BLOB fields:

function interbase_sql_exec ($sql) {
$dataArr = array();
$host = "svrname:path\filename.GDB";
$username = "whatever";
$password = "******";
$connection = ibase_connect ($host, $username, $password,'ISO8859_1', '100', '1');
$rid = @ibase_query ($connection, $sql);
    if (
$rid===false) errorHandle(ibase_errmsg(),$sql);
$coln = ibase_num_fields($rid);
$blobFields = array();
    for (
$i=0; $i < $coln; $i++) {
$col_info = ibase_field_info($rid, $i);
        if (
$col_info["type"]=="BLOB") $blobFields[$i] = $col_info["name"];
    while (
$row = ibase_fetch_row ($rid)) {
        foreach (
$blobFields as $field_num=>$field_name) {
$blobid = ibase_blob_open($row[$field_num]);
$row[$field_num] = ibase_blob_get($blobid,102400);
$dataArr[] = $row;
ibase_close ($connection);
escoric at latinmail dot com
12 years ago
/* If your work environment is windows */

$link=ibase_connect ($path, $usuario, $password, 'WIN1251');
SenorTZ senortz at nospam dot yahoo dot com
13 years ago
Two comments on interogating system tables in Interbase or Firebird; I hope it helps.

1. if you try to build a query string to extract data from a system table (that has the form "rdb$some_name"), you should divide the "rdb$some_name" table name in your query string using the string merge operator ".".
$query = "select rdb"."$"."relation_name as TABLE_NAME from rdb"."$"."relations where rdb"."$"."system_flag=0";

2. The second thing is related to the fact that you can later use (after the call to ibase_fetch_object) as field identifier the ALIAS used in the query for the "rdb$some_name" table.

$get_table_names_query = "select rdb"."$"."relation_name as TABLE_NAME from rdb"."$"."relations where rdb"."$"."system_flag=0";
$res_table_names_query = ibase_query($dbconnection, $get_table_names_query);
while ($row_table_names = ibase_fetch_object($res_table_names_query))
    print($row_table_names->TABLE_NAME);//alias used

Editor's note:
it is easier to use a backslash to protect the $-sign.
eg. "select rdb\$relation_name as TABLE_NAME from ..."
eric_cavalcanti at hotmail dot com
15 years ago
Using BLOB

Insert BLOB:

/* create blob */
$blob_id = ibase_blob_create();

/* fill blob */
ibase_blob_add($blob_id, $var_datablob);

/* close new blob */
$blob_id_str = ibase_blob_close($blob_id);

/* insert into table  */
ibase_query("INSERT INTO BLOB_TABLE (ID, BLOB) VALUES (1, ?)",$blob_id_str);

Open BLOB:

/* query */
$set = ibase_query("SELECT BLOB FROM BLOB_TABLE WHERE ID = 1");

/* fetche a row */
$row = ibase_fetch_object($set);

/* open BLOB for read */
$blob_id = ibase_blob_open($row->BLOB);

/* get BLOB data */
$stringBLOB = ibase_blob_get($blob_id);

/* print BLOB */
echo $stringBLOB;

/* close new blob */

/* free result */
coladict at gmail dot com
1 year ago
Contrary to it's description, the function does not always execute the query, unless you try fetching the results. I discovered this through the following code:

= ibase_query($dbh,"SELECT boniid FROM PROC_INS_OBONI_DELIV_ADDBONITM ( ? , ? , ? , ? , null , ? )", $bon_id , $plucode2 , $amount , $note $discount);
$this->log_add(mb_convert_encoding("SELECT boniid FROM PROC_INS_OBONI_DELIV_ADDBONITM ( " . $bon_id . ", " . $plucode2 . ", " . $amount . ", " . $note . ", " . $nullparent . ", " . $discount . " )",'utf8','cp1251'));

                if (!
$errmsg = ibase_errmsg();

$this->log_add("Item (" . $mid . " - " . $plucode2 . ") : Error returned (" . __LINE__ . "): " . $errmsg);
"Error sending product ( $m_name). Error message:  $errmsg";

// item data does NOT enter the database if I don't call ibase_fetch_assoc
$row = ibase_fetch_assoc($result);

This problem may be limited to FireBird 1.5 or it may not be. Either way, be wary of it.
To Top