Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : Firebird/InterBase Functions : ibase_fetch_row

ibase_fetch_row

Fetch a row from an InterBase database (PHP 4, PHP 5)
array ibase_fetch_row ( resource result_identifier [, int fetch_flag] )


Code Examples / Notes » ibase_fetch_row

richard

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]
}
?>


gurroa

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


Change Language


Follow Navioo On Twitter
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_timefmt
ibase_trans
ibase_wait_event
eXTReMe Tracker