pg_fetch_row

(PHP 4, PHP 5, PHP 7, PHP 8)

pg_fetch_rowRetorna uma linha como um array enumerado

Descrição

pg_fetch_row ( resource $result , int $row ) : array

pg_fetch_row() retorna uma linha de dados a partir do resultado associado com o recurso (resource) de resultado result. A linha (registro) é recuperada como um array. Cada coluna do resultado é armazenada em um índice do array, iniciando-se no índice 0.

Retorna um array que corresponde à linha carregada, ou false se não existem mais linhas.

Exemplo #1 Retornando linhas (registros) no PostgreSQL

<?php 
$conn 
pg_pconnect("dbname=editora");
if (!
$conn) {
    echo 
"Um erro ocorreu.\n";
    exit;
}

$result pg_query($conn"SELECT * FROM autores");
if (!
$result) {
    echo 
"Um erro ocorreu.\n";
    exit;
}

while (
$row=pg_fetch_row($result,$i)) {
  for(
$j=0$j count($row); $j++) {
     echo 
$row[$j] . "&nbsp;";
  }

  echo 
"<br />\n";

}

?>

Nota:

A partir do PHP 4.1.0, row tornou-se opcional. Ao chamar pg_fetch_row(), o contador de linha interno será incrementado em 1.

Veja também pg_query(), pg_fetch_array(), pg_fetch_object() e pg_fetch_result().

add a note add a note

User Contributed Notes 7 notes

up
3
pletiplot at seznam dot cz
17 years ago
Note, that when you retrieve some PG boolean value, you get 't' or 'f' characters which are not compatible with PHP bool.
up
2
post at zeller-johannes dot de
19 years ago
I wondered whether array values of PostgreSQL are converted to PHP arrays by this functions. This is not the case, they are stored in the returned array as a string in the form "{value1 delimiter value2 delimiter value3}" (See http://www.postgresql.org/docs/8.0/interactive/arrays.html#AEN5389).
up
0
eddie at eddiemonge dot com
14 years ago
pg_fetch_row is faster than pg_fetch_assoc when doing a query with * as the select parameter. Otherwise, with declared columns, the two are similar in speed.
up
0
darw75 at swbell dot net
22 years ago
a way to do this with 2 loops to insert data into a table...

$num = pg_numrows($result);
$col_num = pg_numfields($result);

for ($i=0; $i<$num; $i++) {
  $line  = pg_fetch_array($result, $i, PGSQL_ASSOC);
  print "\t<tr bgcolor=#dddddd>\n";
    for ($j=0; $j<$col_num; $j++){
    list($col_name, $col_value) =each($line);
    print "\t\t<TD ALIGN=RIGHT><FONT SIZE=1 FACE='Geneva'>$col_value</FONT></TD>\n";
    }
  echo "<br>";
  }
up
-2
Matthew Wheeler
20 years ago
Note that the internal row counter is incremented BEFORE the row is retrieved. This causes an off by one error if you try to do:

pg_result_seek($resid,0);
pg_fetch_row($resid);

you will get back the SECOND result not the FIRST.
up
-5
maxnamara at yahoo dot com
19 years ago
Get downlines, put them into arrays.

function get_downlines($my_code){
    global $link;

    $sql = "select user_id, name from tb_user where parentcode = $my_code";
    $res = pg_query($link,$sql);
    if(!$res){
        echo "Error: ".$sql;exit();
    }
    $num_fields = pg_num_fields($res);
    $info_rows = 0;

    $num_rows = pg_num_rows($res);
    while($arr = pg_fetch_row($res)){

           $info_offset  = 1;
         $info_columns  = 0;

        while ($info_offset <= $num_fields) {
                 $info_elements[$info_rows][$info_columns] = $arr[$info_columns];
                 $info_offset++; $info_columns++;
        }
        $info_rows++;           
    }
return $info_elements;
}
up
-6
imantr at cbn dot net dot id
21 years ago
I use the following code to assigning query result to an array.

while ($row = pg_fetch_row($result)) $newArray[] = $row[0];

print_r($newArray);
To Top