PHP Conference Japan 2024

pg_fetch_all_columns

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

pg_fetch_all_columns將特定結果欄位中的所有列擷取為陣列

說明

pg_fetch_all_columns(PgSql\Result $result, int $field = 0): array

pg_fetch_all_columns() 會傳回一個陣列,其中包含 PgSql\Result 實例中特定欄位的所有列(記錄)。

注意此函式會將 NULL 欄位設定為 PHP null 值。

參數

result

一個 PgSql\Result 實例,由 pg_query()pg_query_params()pg_execute()(以及其他函式)返回。

field

欄位編號。如果未指定,則預設為第一個欄位。

返回值

一個包含結果欄位中所有值的 陣列

更新日誌

版本 說明
8.1.0 result 參數現在需要一個 PgSql\Result 實例;以前需要的是 資源

範例

範例 #1 pg_fetch_all_columns() 範例

<?php
$conn
= pg_pconnect("dbname=publisher");
if (!
$conn) {
echo
"發生錯誤。\n";
exit;
}

$result = pg_query($conn, "SELECT title, name, address FROM authors");
if (!
$result) {
echo
"發生錯誤。\n";
exit;
}

// 取得所有作者姓名的陣列
$arr = pg_fetch_all_columns($result, 1);

var_dump($arr);

?>

參見

新增註記

使用者貢獻的註記 3 則註記

3
strata_ranger at hotmail dot com
15 年前
很遺憾,pg_fetch_all_columns() 不支援透過名稱擷取欄位 -- 如果您想這樣做,您需要使用 pg_field_num() 作為中介

例如

<?php

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

else
$cols = "last_name, middle_init";

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

// 問題 -- 第二欄指的是 'birthday' 還是 'middle_init' 欄位?
$array = pg_fetch_all_columns($result, 2);

// 無法運作,必須使用欄位編號而不是名稱
$array = pg_fetch_all_columns($result, 'birthday');

// 可以運作
$array = pg_fetch_all_columns($result, pg_field_num($result, 'birthday'));

?>
2
spambin at ya dot ru
11 年前
即使結果集為空,pg_fetch_all_columns() 也會返回陣列(空陣列)(而當結果集為空時,pg_fetch_all() 會返回 FALSE)

<?
$result = pg_query("
SELECT 'something'
WHERE 1 = 2
");
var_dump( pg_fetch_all($result) ); // 布林值 false
var_dump( pg_fetch_all_columns($result) ); // array(0){}
?>
-1
massiv at nerdshack dot com
16 年前
php 4 等效程式碼

<?php
$conn
= pg_pconnect("dbname=publisher");
if (!
$conn) {
echo
"發生錯誤。\n";
exit;
}

$result = pg_query($conn, "SELECT title, name, address FROM authors");
if (!
$result) {
echo
"發生錯誤。\n";
exit;
}

// 取得所有作者名稱的陣列
$arr = array();
while (
$line = pg_fetch_array($result)) {
array_push($arr, $line['name']);
}

var_dump($arr);

?>
To Top