文字

pg_fetch_row

(PHP 4, PHP 5)

pg_fetch_row提取一行作为枚举数组

说明

array pg_fetch_row ( resource $result [, int $row ] )

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

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 .

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

更新日志

版本 说明
4.1.0 参数 row 成为可选参数。

范例

Example #1 pg_fetch_row() 例子

<?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" ;
}
 
?>

参见

  • pg_query() - 执行查询
  • pg_fetch_array() - 提取一行作为数组
  • pg_fetch_object() - 提取一行作为对象
  • pg_fetch_result() - 从结果资源中返回值

用户评论:

[#1] eddie at eddiemonge dot com [2009-10-06 17:09:31]

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.

[#2] pletiplot at seznam dot cz [2006-06-06 15:18:42]

Note, that when you retrieve some PG boolean value, you get 't' or 'f' characters which are not compatible with PHP bool.

[#3] post at zeller-johannes dot de [2005-04-26 14:51:53]

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).

[#4] maxnamara at yahoo dot com [2004-10-14 00:03:01]

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;
}

[#5] Matthew Wheeler [2003-05-22 21:29:53]

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.

[#6] imantr at cbn dot net dot id [2002-07-23 20:38:55]

I use the following code to assigning query result to an array.

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

print_r($newArray);

[#7] darw75 at swbell dot net [2001-08-22 17:39:23]

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>";
  }

上一篇: 下一篇: