ibase_fetch_row
(PHP 5)
ibase_fetch_row — Fetch a row from an InterBase database
Description
$result_identifier
[, int $fetch_flag
= 0
] )ibase_fetch_row() fetches one row of data from the given result set.
Subsequent calls to ibase_fetch_row()
return the next row in the result set, or FALSE
if there are no
more rows.
Parameters
-
result_identifier
-
An InterBase result identifier.
-
fetch_flag
-
fetch_flag
is a combination of the constantsIBASE_TEXT
andIBASE_UNIXTIME
ORed together. PassingIBASE_TEXT
will cause this function to return BLOB contents instead of BLOB ids. PassingIBASE_UNIXTIME
will cause this function to return date/time values as Unix timestamps instead of as formatted strings.
Return Values
Returns an array that corresponds to the fetched row, or FALSE
if there
are no more rows. Each result column is stored in an array offset,
starting at offset 0.
See Also
- ibase_fetch_assoc() - Fetch a result row from a query as an associative array
- ibase_fetch_object() - Get an object from a InterBase database
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с базами данных
- Расширения для работы с базами данных отдельных производителей
- Firebird/InterBase
- ibase_add_user
- ibase_affected_rows
- ibase_backup
- ibase_blob_add
- ibase_blob_cancel
- ibase_blob_close
- ibase_blob_create
- ibase_blob_echo
- ibase_blob_get
- ibase_blob_import
- ibase_blob_info
- ibase_blob_open
- ibase_close
- ibase_commit_ret
- ibase_commit
- ibase_connect
- ibase_db_info
- ibase_delete_user
- ibase_drop_db
- ibase_errcode
- ibase_errmsg
- ibase_execute
- ibase_fetch_assoc
- ibase_fetch_object
- ibase_fetch_row
- ibase_field_info
- ibase_free_event_handler
- ibase_free_query
- ibase_free_result
- ibase_gen_id
- ibase_maintain_db
- ibase_modify_user
- ibase_name_result
- ibase_num_fields
- ibase_num_params
- ibase_param_info
- ibase_pconnect
- ibase_prepare
- ibase_query
- ibase_restore
- ibase_rollback_ret
- ibase_rollback
- ibase_server_info
- ibase_service_attach
- ibase_service_detach
- ibase_set_event_handler
- ibase_trans
- ibase_wait_event
Коментарии
I had some troubles with moving php application from one dbase to another. From SyBase to Interbase.
Especially with missing function "ibase_num_rows($result)".
These are functions that helped me.
<?php
...
$dbh = ibase_connect ($host, $username, $password);
...
$ar_count_queries = array();
function ibasequery($query) {
$cquery = preg_replace("/SELECT(.*?)FROM(.*?)/","SELECT COUNT(*) FROM \\2",$query);
if ($cquery != $query) {
$crow=get_object_vars( ibase_fetch_object( ibase_query( $GLOBALS["dbh"], $cquery ) ) );
}
@$res = ibase_query($GLOBALS["dbh"],$query);
if (isset($res)) {
if (isset($crow)) {
$GLOBALS["ar_count_queries"][$res] = $radcountselect["COUNT"];
}
return $res;
}
return false;
}
function ibasenumrows($result) {
return $GLOBALS["ar_count_queries"][$res];
}
function ibasefetchrow($result) {
return get_object_vars(ibase_fetch_object($result));
}
// example
$result = ibasequery("SELECT * FROM TABLE");
$numrows = ibasenumrows($result);
echo "Number of rows: $numrows.\nContent: \n";
while ($onerow = ibasefetchrow($res)) {
foreach($onerow as $key => $value) {
echo $key.": ".$value.", ";
}
echo "\n";
}
?>
Gurroa
If you have a query
"select ... from table1 where ..."
and would like to know the cardinality of the result set by issuing a separate query
"select count(*) from table1 where ..."
then you might end up with an incorrect value since an insert or delete can occur between the running of these queries (unlikely, but possible).
The only way i can think of getting the correct value would be something along the lines of
<?php
$qry = "select ... from table1 where ...";
$result = ibase_query($tr, $qry) // assume $tr is a transaction
$count = 0;
while ($row[$count] = ibase_fetch_assoc($result))
$count++;
?>
then $count is the cardinality, and $row the result set.
Then you can work with the result set:
<?php
for ($i = 0; $i < $count; $i++)
{
// do something with $row[$i]
}
?>