(PHP 5 >= 5.2.0, PHP 7, PHP 8)
pg_field_table — Возвращает наименование или идентификатор таблицы, содержащей заданное поле
$result, int $field, bool $oid_only = false ): string |int |false
pg_field_table() возвращает имя таблицы, которой принадлежит
заданное поле. Если в качестве аргумента oid_only передаётся
true , функция вернёт oid-идентификатор таблицы.
resultfieldПорядковый номер поля результата запроса, начиная с нуля.
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_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
?>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