Files
php-doc-ru/reference/mysqli/mysqli_result/fetch-fields.xml
2024-04-23 15:25:31 +03:00

293 lines
9.0 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 5152c78db935ea2463e20a01ae0e3f3573314d78 Maintainer: tmn Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="mysqli-result.fetch-fields" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>mysqli_result::fetch_fields</refname>
<refname>mysqli_fetch_fields</refname>
<refpurpose>Возвращает массив объектов, которые представляют поля результирующего набора</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<para>&style.oop;</para>
<methodsynopsis role="mysqli_result">
<modifier>public</modifier> <type>array</type><methodname>mysqli_result::fetch_fields</methodname>
<void/>
</methodsynopsis>
<para>&style.procedural;</para>
<methodsynopsis>
<type>array</type><methodname>mysqli_fetch_fields</methodname>
<methodparam><type>mysqli_result</type><parameter>result</parameter></methodparam>
</methodsynopsis>
<para>
Метод служит той же цели, что и функция <function>mysqli_fetch_field</function>,
с той только разницей, что вместо возврата по одному объекту для каждого поля
возвращает столбцы как массив объектов.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
&mysqli.result.description;
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Метод возвращает массив объектов, которые содержат информацию об определении полей.
</para>
<table>
<title>Свойства объекта</title>
<tgroup cols="2">
<thead>
<row>
<entry>Свойство</entry>
<entry>Описание</entry>
</row>
</thead>
<tbody>
<row>
<entry>name</entry>
<entry>Имя столбца</entry>
</row>
<row>
<entry>orgname</entry>
<entry>Исходное имя столбца, если указали псевдоним</entry>
</row>
<row>
<entry>table</entry>
<entry>Имя таблицы, которой принадлежит столбец (если не вычислено)</entry>
</row>
<row>
<entry>orgtable</entry>
<entry>Исходное имя таблицы, если указали псевдоним</entry>
</row>
<row>
<entry>def</entry>
<entry>Неиспользуемый. Всегда пустая строка</entry>
</row>
<row>
<entry>db</entry>
<entry>Имя базы данных</entry>
</row>
<row>
<entry>catalog</entry>
<entry>Неиспользуемый. Всегда <literal>«def»</literal></entry>
</row>
<row>
<entry>max_length</entry>
<entry>
Максимальная ширина поля результирующего набора. Начиная с PHP 8.1 это значение всегда равно <literal>0</literal>
</entry>
</row>
<row>
<entry>length</entry>
<entry>
Ширина поля в байтах. Для строковых столбцов
значение длины зависит от кодировки соединения. Например,
если кодировка — <literal>latin1</literal>, однобайтовый набор символов,
значение длины для запроса <literal>SELECT 'abc'</literal> равно 3.
Если кодировка — <literal>utf8mb4</literal>, многобайтовый набор
символов, в котором символы занимают до 4 байтов, значение длины равно 12
</entry>
</row>
<row>
<entry>charsetnr</entry>
<entry>Номер кодировки для поля</entry>
</row>
<row>
<entry>flags</entry>
<entry>Целое число, которое представляет битовые флаги для поля</entry>
</row>
<row>
<entry>type</entry>
<entry>Тип данных поля</entry>
</row>
<row>
<entry>decimals</entry>
<entry>Количество десятичных знаков для числовых полей и точность долей секунды для временных полей</entry>
</row>
</tbody>
</tgroup>
</table>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>&style.oop;</title>
<programlisting role="php">
<![CDATA[
<?php
$mysqli = new mysqli("127.0.0.1", "root", "foofoo", "sakila");
/* Проверяем соединение */
if ($mysqli->connect_errno) {
printf("Не удалось подключиться: %s\n", $mysqli->connect_error);
exit();
}
foreach (array('latin1', 'utf8') as $charset) {
// Устанавливаем кодировку, чтобы показать влияние набора символов на некоторые значения (например, длину в байтах)
$mysqli->set_charset($charset);
$query = "SELECT actor_id, last_name from actor ORDER BY actor_id";
echo "======================\n";
echo "Character Set: $charset\n";
echo "======================\n";
if ($result = $mysqli->query($query)) {
/* Читаем информацию о полях для каждого столбца */
$finfo = $result->fetch_fields();
foreach ($finfo as $val) {
printf("Name: %s\n", $val->name);
printf("Table: %s\n", $val->table);
printf("Max. Len: %d\n", $val->max_length);
printf("Length: %d\n", $val->length);
printf("charsetnr: %d\n", $val->charsetnr);
printf("Flags: %d\n", $val->flags);
printf("Type: %d\n\n", $val->type);
}
$result->free();
}
}
$mysqli->close();
?>
]]>
</programlisting>
</example>
<example>
<title>&style.procedural;</title>
<programlisting role="php">
<![CDATA[
<?php
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "sakila");
/* Проверяем соединение */
if (mysqli_connect_errno()) {
printf("Не удалось подключиться: %s\n", mysqli_connect_error());
exit();
}
foreach (array('latin1', 'utf8') as $charset) {
// Устанавливаем кодировку, чтобы показать влияние набора символов на некоторые значения (например, длину в байтах)
mysqli_set_charset($link, $charset);
$query = "SELECT actor_id, last_name from actor ORDER BY actor_id";
echo "======================\n";
echo "Character Set: $charset\n";
echo "======================\n";
if ($result = mysqli_query($link, $query)) {
/* Читаем информацию о полях для каждого столбца */
$finfo = mysqli_fetch_fields($result);
foreach ($finfo as $val) {
printf("Name: %s\n", $val->name);
printf("Table: %s\n", $val->table);
printf("Max. Len: %d\n", $val->max_length);
printf("Length: %d\n", $val->length);
printf("charsetnr: %d\n", $val->charsetnr);
printf("Flags: %d\n", $val->flags);
printf("Type: %d\n\n", $val->type);
}
mysqli_free_result($result);
}
}
mysqli_close($link);
?>
]]>
</programlisting>
&examples.outputs;
<screen>
<![CDATA[
======================
Character Set: latin1
======================
Name: actor_id
Table: actor
Max. Len: 3
Length: 5
charsetnr: 63
Flags: 49699
Type: 2
Name: last_name
Table: actor
Max. Len: 12
Length: 45
charsetnr: 8
Flags: 20489
Type: 253
======================
Character Set: utf8
======================
Name: actor_id
Table: actor
Max. Len: 3
Length: 5
charsetnr: 63
Flags: 49699
Type: 2
Name: last_name
Table: actor
Max. Len: 12
Length: 135
charsetnr: 33
Flags: 20489
]]>
</screen>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>mysqli_num_fields</function></member>
<member><function>mysqli_fetch_field_direct</function></member>
<member><function>mysqli_fetch_field</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->