PHP 8.4.0 RC4 available for testing

ibase_fetch_row

(PHP 5, PHP 7 < 7.4.0)

ibase_fetch_rowИзвлекает строку из базы данных InterBase

Описание

ibase_fetch_row(resource $result_identifier, int $fetch_flag = 0): array

ibase_fetch_row() извлекает одну строку данных из данного набора результатов.

Последующие вызовы ibase_fetch_row() вернут следующую строку в наборе результатов или false, если строк больше нет.

Список параметров

result_identifier

Идентификатор результата InterBase.

fetch_flag

fetch_flag представляет собой комбинацию констант IBASE_TEXT и IBASE_UNIXTIME ORed. Передача IBASE_TEXT заставит функцию возвращать содержимое BLOB-объектов вместо идентификаторов BLOB-объектов. Передача IBASE_UNIXTIME заставит функцию возвращать значения даты/времени как метки времени Unix, а не как отформатированные строки.

Возвращаемые значения

Возвращает массив, соответствующий выбранной строке, или false, если строк больше нет. Каждый столбец результата сохраняется в смещении массива, начиная со смещения 0.

Смотрите также

  • ibase_fetch_assoc() - Извлекает строку результата из запроса в виде ассоциативного массива
  • ibase_fetch_object() - Получает объект из базы данных InterBase

Добавить

Примечания пользователей 2 notes

up
1
richard at wojthegame dot com
18 years ago
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]
}

?>
up
0
gurroa at gurroa dot cz
21 years ago
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
To Top