1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 07:42:22 +01:00
Files
archived-doc-ru/reference/pgsql/functions/pg-select.xml
2024-12-26 18:01:29 +03:00

217 lines
9.1 KiB
XML
Raw Permalink 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: 18aa2012f6fa1e5b09733147e02911d16e06d4a1 Maintainer: aur Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.pg-select" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>pg_select</refname>
<refpurpose>
Выбирает записи из базы данных
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>array</type><type>string</type><type>false</type></type><methodname>pg_select</methodname>
<methodparam><type>PgSql\Connection</type><parameter>connection</parameter></methodparam>
<methodparam><type>string</type><parameter>table_name</parameter></methodparam>
<methodparam choice="opt"><type>array</type><parameter>conditions</parameter><initializer>[]</initializer></methodparam>
<methodparam choice="opt"><type>int</type><parameter>flags</parameter><initializer><constant>PGSQL_DML_EXEC</constant></initializer></methodparam>
<methodparam choice="opt"><type>int</type><parameter>mode</parameter><initializer><constant>PGSQL_ASSOC</constant></initializer></methodparam>
</methodsynopsis>
<para>
Функция <function>pg_select</function> выбирает из базы данных записи,
которые удовлетворяют условиям <literal>field=&gt;value</literal>
в массиве <parameter>conditions</parameter>. Функция вернёт массив записей,
поля которых удовлетворяют условиям <parameter>conditions</parameter>.
</para>
<para>
При установке параметра <parameter>flags</parameter>
функция применит к каждому условию в массиве <parameter>conditions</parameter>
функцию <function>pg_convert</function> с этими флагами.
</para>
<para>
При установке для параметра <parameter>mode</parameter>
режима <constant>PGSQL_NUM</constant> функция вернёт значение в форме индексного массива,
в режиме по умолчанию <constant>PGSQL_ASSOC</constant> возвращается ассоциативный массив,
а в режиме <constant>PGSQL_BOTH</constant> функция возвращает значения полей и с целочисленными,
и со строковыми ключами.
</para>
<para>
По умолчанию функция <function>pg_insert</function> передаёт необработанные значения.
Значения потребуется заэкранировать или указать опцию PGSQL_DML_ESCAPE.
Опция PGSQL_DML_ESCAPE берёт в кавычки и экранирует
параметры и идентификаторы. Поэтому названия таблиц и столбцов становятся
чувствительными к регистру.
</para>
<para>
Обратите внимание, что ни экранирование, ни подготовленный запрос не защитят запрос LIKE,
JSON, массив, регулярные выражения и т. д. Эти параметры потребуется обработать
в соответствии с их контекстом — заэкранировать или проверить значения.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>connection</parameter></term>
<listitem>
&pgsql.parameter.connection;
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>table_name</parameter></term>
<listitem>
<para>
Название таблицы, из которой требуется выбрать данные.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>conditions</parameter></term>
<listitem>
<para>
Массив (<type>array</type>), ключи которого соответствуют названиям полей таблицы
<parameter>table_name</parameter>, а значения — условиям извлечения строк.
Начиная с PHP 8.4.0 при передаче пустого массива функция не применяет условия.
Раньше при передаче пустого массива <parameter>conditions</parameter> функция завершалась ошибкой.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>flags</parameter></term>
<listitem>
<para>
Параметр принимает произвольное сочетание следующих констант: <constant>PGSQL_CONV_FORCE_NULL</constant>,
<constant>PGSQL_DML_NO_CONV</constant>,
<constant>PGSQL_DML_ESCAPE</constant>,
<constant>PGSQL_DML_EXEC</constant>,
<constant>PGSQL_DML_ASYNC</constant>,
<constant>PGSQL_DML_STRING</constant>.
Функция вернёт строку запроса, если в списке флагов <parameter>flags</parameter> содержится
флаг <constant>PGSQL_DML_STRING</constant>. При установке флага <constant>PGSQL_DML_NO_CONV</constant>
или <constant>PGSQL_DML_ESCAPE</constant> функция <function>pg_convert</function> внутренне не вызывается.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>mode</parameter></term>
<listitem>
<para>
Константа <constant>PGSQL_ASSOC</constant>,
<constant>PGSQL_NUM</constant>
или <constant>PGSQL_BOTH</constant>.
В режиме <constant>PGSQL_ASSOC</constant> функция возвращает
ассоциативный массив,
в режиме <constant>PGSQL_NUM</constant> возвращается индексный массив,
а в режиме <constant>PGSQL_BOTH</constant> функция вернёт значения
и с ассоциативным, и с числовым ключом.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает значение с типом <type>string</type>, если аргумент <parameter>flags</parameter>
содержит флаг <constant>PGSQL_DML_STRING</constant>,
в остальных случаях функция возвращает значение с типом <type>array</type>, если выполнилась успешно,&return.falseforfailure;.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.4.0</entry>
<entry>
Параметр <parameter>conditions</parameter> стал необязательным.
</entry>
</row>
&pgsql.changelog.connection-object;
<row>
<entry>7.1.0</entry>
<entry>
Добавили параметр <parameter>mode</parameter>.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример выборки записей функцией <function>pg_select</function></title>
<programlisting role="php">
<![CDATA[
<?php
$db = pg_connect('dbname=foo');
// Отчасти это безопасно, поскольку значения экранируются.
// Однако СУБД PostgreSQL поддерживает типы JSON и массив. Для таких значений это небезопасно
// ни с экранированием, ни в подготовленном запросе
$rec = pg_select($db, 'post_log', $_POST);
if ($rec) {
echo "Функция выбрала следующие записи\n";
var_dump($rec);
} else {
echo "Пользователь, должно быть, отправил неверные данные\n";
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>pg_convert</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
-->