pg_fetch_row

(PHP 3 >= 3.0.1, PHP 4, PHP 5)

pg_fetch_row -- 提取一行作为枚举数组

说明

array pg_fetch_row ( resource result, int row )

pg_fetch_row() 根据指定的 result 资源提取一行数据(记录)作为数组返回。每个得到的列依次存放在数组中,从偏移量 0 开始。

返回的数组和提取的行相一致。如果没有更多行可提取,则返回 FALSE

例子 1. pg_fetch_row() 例子

<?php
$conn
= pg_pconnect("dbname=publisher");
if (!
$conn) {
    echo
"An error occured.\n";
    exit;
}

$result = pg_query($conn, "SELECT * FROM authors");
if (!
$result) {
    echo
"An error occured.\n";
    exit;
}

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

  echo
"<br />\n";

}
?>

注: 从 4.1.0 开始,row 成为可选参数。每次调用 pg_fetch_row(),内部的行计数器都会加一。

参见 pg_query()pg_fetch_array()pg_fetch_object()pg_fetch_result()


add a note add a note User Contributed Notes
pletiplot at seznam dot cz
07-Jun-2006 06:18
Note, that when you retrieve some PG boolean value, you get 't' or 'f' characters which are not compatible with PHP bool.
post at zeller-johannes dot de
27-Apr-2005 05:51
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).
maxnamara at yahoo dot com
14-Oct-2004 03:03
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;
}
Matthew Wheeler
23-May-2003 12:29
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.
imantr at cbn dot net dot id
24-Jul-2002 11:38
I use the following code to assigning query result to an array.

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

print_r($newArray);
darw75 at swbell dot net
23-Aug-2001 08:39
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>";
  }
rtreat2 at tampabay dot rr dot com
24-Oct-2000 08:41
the mysql way....

$rows = pg_numrows($result);
for ($i=0; $i < $rows; $i++){
   list($foo,$bar) = pg_fetch_row($result,$i);

   print ("$foo , $bar)\n");
}