PHP Conference Japan 2024

pg_field_name

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_field_name返回欄位的名稱

說明

pg_field_name(PgSql\Result $result, int $field): string

pg_field_name() 函式會傳回指定 result 實例中,給定 field 欄位的名稱。欄位編號從 0 開始。

注意事項:

此函式過去的名稱為 pg_fieldname()

參數

result

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

field

欄位編號,從 0 開始。

傳回值

欄位名稱。

更新日誌

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

範例

範例 #1 取得欄位資訊

<?php
$dbconn
= pg_connect("dbname=publisher") or die("無法連線");

$res = pg_query($dbconn, "select * from authors where author = 'Orwell'");
$i = pg_num_fields($res);
for (
$j = 0; $j < $i; $j++) {
echo
"欄位 $j\n";
$fieldname = pg_field_name($res, $j);
echo
"欄位名稱: $fieldname\n";
echo
"顯示長度: " . pg_field_prtlen($res, $fieldname) . " 個字元\n";
echo
"儲存長度: " . pg_field_size($res, $j) . " 位元組\n";
echo
"欄位類型: " . pg_field_type($res, $j) . " \n\n";
}
?>

以上範例會輸出:

column 0
fieldname: author
printed length: 6 characters
storage length: -1 bytes
field type: varchar 

column 1
fieldname: year
printed length: 4 characters
storage length: 2 bytes
field type: int2 

column 2
fieldname: title
printed length: 24 characters
storage length: -1 bytes
field type: varchar

參見

新增筆記

使用者貢獻的筆記 2 則筆記

匿名
20 年前
事實上,您可以透過發送以下查詢來擷取 varchar 欄位的大小
"select a.atttypmod,a.attrelid from pg_attribute as a, pg_class as c where c.relname='$table' AND a.attrelid=c.oid AND a.attname='$field'"

這裡有一個簡單的函式可以做到這一點

function get_field_size($table, $field, $link) {

$result = pg_query($link, "select a.atttypmod,a.attrelid from pg_attribute as a, pg_class as c where c.relname='$table' AND a.attrelid=c.oid AND a.attname='$field'");

$data = pg_fetch_object($result);

return ($data->atttypmod - 4);

}

回傳值是給定欄位的大小(也是 varchar)
ccasal at compuserve dot com
23 年前
pg_fieldname 函式只會從 select 陳述式中返回未限定的名稱。例如

select c.name, con.name from customer c, contacts con where con.customer_id = c.id;

pg_fieldname 會為兩個欄位都返回 "name",而不是 c.name 和 con.name。

這是 PostgreSQL 的限制,而不是 PHP 的限制。

如果您需要不同的欄位名稱,您應該使用

select c.name as customer_name, con.name as contact_name from customer c, contacts con where con.customer_id = c.id;

那麼 pg_fieldname 將返回 "customer_name" 和 "contact_name"
To Top