pg_fetch_row()
(PHP 4, PHP 5, PHP 7)
提取一行作为枚举数组
说明
pg_fetch_row(resource $result[,int $row]): array
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. DatabaseNULLvalues 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()
从结果资源中返回值
Note, that when you retrieve some PG boolean value, you get 't' or 'f' characters which are not compatible with PHP bool.
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).
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.
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>"; }
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.
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; }
I use the following code to assigning query result to an array. while ($row = pg_fetch_row($result)) $newArray[] = $row[0]; print_r($newArray);