©
Ce document utilise Manuel du site Web PHP chinois Libérer
(PHP 5 >= 5.1.0)
pg_fetch_all_columns — Fetches all rows in a particular result column as an array
$result
[, int $column
= 0
] )pg_fetch_all_columns() returns an array that contains all rows (records) in a particular column of the result resource.
Note: 此函数将 NULL 字段设置为 PHP
NULL
值。
result
PostgreSQL query result resource, returned by pg_query() , pg_query_params() or pg_execute() (among others).
column
Column number, zero-based, to be retrieved from the result resource. Defaults to the first column if not specified.
An array with all values in the result column.
FALSE
is returned if column
is larger than the number
of columns in the result, or on any other error.
Example #1 pg_fetch_all_columns() example
<?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;
}
// Get an array of all author names
$arr = pg_fetch_all_columns ( $result , 1 );
var_dump ( $arr );
?>
[#1] spambin at ya dot ru [2013-11-21 11:48:19]
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)
<?php
$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){}
?>
[#2] strata_ranger at hotmail dot com [2009-04-04 18:43:39]
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'));
?>
[#3] massiv at nerdshack dot com [2008-10-22 05:56:42]
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);
?>