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

列号。如果未指定,则默认为第一列。

返回值

一个 array,其中包含结果列中的所有值。

变更日志

版本 描述
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");

// 问题 - 列 #2 指的是 '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
10 年前
即使结果集为空,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
15 年前
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