ConFoo: Call for paper is now Open

pg_fetch_all_columns

(PHP 5 >= 5.1.0)

pg_fetch_all_columns指定したカラムの全ての行を配列として取得する

説明

array pg_fetch_all_columns ( resource $result [, int $column = 0 ] )

pg_fetch_all_columns() は、結果リソースの 指定したカラムについて全ての行(レコード)を含む配列を返します。

注意: この関数は、 NULL フィールドに PHPの NULL 値を設定します。

パラメータ

result

pg_query(), pg_query_params() あるいは pg_execute() から返される PostgreSQL の クエリ結果リソース。

column

結果リソースから取得するカラムの番号。0 から始まります。 指定しない場合のデフォルトは最初のカラムです。

返り値

結果カラムの全ての値を配列で返します。

column が結果のカラム数より大きい場合や その他のエラーが発生した場合に FALSE を返します。

例1 pg_fetch_all_columns() の例

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

$result pg_query($conn"SELECT title, name, address FROM authors");
if (!
$result) {
  echo 
"An error occurred.\n";
  exit;
}

// 全ての著者名を配列で得る
$arr pg_fetch_all_columns($result1);

var_dump($arr);

?>

参考

  • pg_fetch_all() - 取得されたすべての行を配列として取得する

add a note add a note

User Contributed Notes 3 notes

up
1
strata_ranger at hotmail dot com
5 years ago
Unfortunate that pg_fetch_all_columns() doesn't support fetching a column by its name -- if you want to do that, you'll need to use pg_field_num() as an intermediary:

For example:

<?php

if ($foo)
 
$cols = "email_address";

else
 
$cols = "last_name, middle_init";

$result = pg_query("Select first_name, $info, birthday from users_table");

// Problem -- does column #2 refer to the 'birthday' or 'middle_init' field?
$array = pg_fetch_all_columns($result, 2);

// Won't work, must use a column number instead of its name
$array = pg_fetch_all_columns($result, 'birthday');

// Works
$array = pg_fetch_all_columns($result, pg_field_num($result, 'birthday'));

?>
up
0
spambin at ya dot ru
9 months ago
pg_fetch_all_columns() returns array (empty array) even if the result set in empty (while pg_fetch_all() returns FALSE when the result set is empty)

<?
$result = pg_query("
    SELECT 'something'
    WHERE 1 = 2
");
var_dump( pg_fetch_all($result) ); // boolean false
var_dump( pg_fetch_all_columns($result) ); // array(0){}
?>
up
0
massiv at nerdshack dot com
5 years ago
php 4 equivalent:

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

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

// Get an array of all author names
$arr = array();
while (
$line = pg_fetch_array($result)) {
 
array_push($arr, $line['name']);
}

var_dump($arr);

?>
To Top