PHP 8.6.0 Beta 1 is available for testing

pg_field_table

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

pg_field_tableВозвращает наименование или идентификатор таблицы, содержащей заданное поле

Описание

function pg_field_table(PgSql\Result $result, int $field, bool $oid_only = false ): string |int |false

pg_field_table() возвращает имя таблицы, которой принадлежит заданное поле. Если в качестве аргумента oid_only передаётся true , функция вернёт oid-идентификатор таблицы.

Список параметров

result
Экземпляр класса PgSql\Result , который возвращают функции pg_query() , pg_query_params() или pg_execute() (среди прочего).
field

Порядковый номер поля результата запроса, начиная с нуля.

oid_only

По умолчанию функция возвращает название таблицы, содержащей заданное поле. Если параметр oid_only равен true , то функция вернёт oid таблицы.

Возвращаемые значения

При успешном завершении название таблицы или её oid или false , если возникла ошибка.

Список изменений

Версия Описание
8.1.0 Параметр result теперь принимает объект PgSql\Result ; раньше параметр принимал тип resource .

Примеры

Пример #1 Получение информации о поле выборки

<?php
$dbconn = pg_connect("dbname=publisher") or die("Не удалось соединиться с базой");
$res = pg_query($dbconn, "SELECT bar FROM foo");
echo pg_field_table($res, 0);
echo pg_field_table($res, 0, true);
$res = pg_query($dbconn, "SELECT version()");
var_dump(pg_field_table($res, 0));
?>

Вывод приведённого примера будет похож на:

foo
14379580
bool(false)

Примечания

Замечание:

Возврат oid таблицы значительно быстрее, чем её названия, потому как определение названия требует выполнения дополнительного запроса к системной таблице базы данных.

Смотрите также

  • pg_field_name() - Возвращает наименование поля
  • pg_field_type() - Возвращает имя типа заданного поля

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 2 notes

up
3
strata_ranger at hotmail dot com
17 years ago
pg_field_table is primarily useful for queries that involve joins between multiple tables, e.g:
<?php
$res = pg_query("SELECT table1.foo, table2.bar FROM table1 JOIN table2");
echo pg_field_table($res, 0); // Outputs 'table1'
echo pg_field_table($res, 1); // Outputs 'table2'
?>

However, be aware of a few easy 'gotchas':
1- If your query contains static values in its select-list, pg_field_table() will yield FALSE for those fields (because it was a static value, not one fetched from a table):
<?php
$res = pg_query("SELECT 'foo', bar FROM table");
echo pg_field_table($res, 0); // FALSE
echo pg_field_table($res, 1); // Outputs 'table'
?>

2- If you UNION two queries together from different tables, pg_field_table() will return FALSE for all fields:
<?php
$res = pg_query("(Select foo, bar from table1) UNION (Select foo, bar from table2)");
echo pg_field_table($res, 0); // FALSE
echo pg_field_table($res, 1); // FALSE
?>
up
1
giultar at gmail dot com
6 years ago
this function return an OID even if your field comes from a view or a select but return FALSE if your field comes from an UNION select
+Добавить

AltStyle によって変換されたページ (->オリジナル) /