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'));
?>
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 occured.\n";
exit;
}
$result = pg_query($conn, "SELECT title, name, address FROM authors");
if (!$result) {
echo "An error occured.\n";
exit;
}
// 全ての著者名を配列で得る
$arr = pg_fetch_all_columns($result, 1);
var_dump($arr);
?>
pg_fetch_all_columns
strata_ranger at hotmail dot com
05-Apr-2009 02:43
05-Apr-2009 02:43
massiv at nerdshack dot com
22-Oct-2008 12:56
22-Oct-2008 12:56
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);
?>
