PostgreSQL 函数
在线手册:中文 英文
PHP手册

pg_fetch_row

(PHP 4, PHP 5)

pg_fetch_row提取一行作为枚举数组

说明

array pg_fetch_row ( resource $result , int $row )

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

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

Example #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";

}
?>

Note:

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

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

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

参数

result

PostgreSQL query result resource, returned by pg_query(), pg_query_params() or pg_execute() (among others).

row

Row number in result to fetch. Rows are numbered from 0 upwards. If omitted or NULL, the next row is fetched.

返回值

An array, indexed from 0 upwards, with each value represented as a string. Database NULL values are returned as NULL.

FALSE is returned if row exceeds the number of rows in the set, there are no more rows, or on any other error.

更新日志

版本 说明
4.1.0 The parameter row became optional.

范例

Example #2 pg_fetch_row() example

<?php

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

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

while (
$row pg_fetch_row($result)) {
  echo 
"Author: $row[0]  E-mail: $row[1]";
  echo 
"<br />\n";
}
 
?>

参见


PostgreSQL 函数
在线手册:中文 英文
PHP手册
PHP手册 - N: 提取一行作为枚举数组

用户评论:

eddie at eddiemonge dot com (07-Oct-2009 01:09)

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.

pletiplot at seznam dot cz (06-Jun-2006 11: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 (26-Apr-2005 10: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 08: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 05: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 04: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 01: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>";
  }