• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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";
    }
     
    ?>
    

    参见

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