1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-25 16:22:18 +01:00
Files
archived-doc-ru/reference/pgsql/functions/pg-prepare.xml
2024-09-22 23:14:05 +03:00

165 lines
6.9 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: 469e5fa809cef61c0707d7447a2ab72cd66f65fd Maintainer: aur Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.pg-prepare" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>pg_prepare</refname>
<refpurpose>
Отправляет на сервер запрос на подготовку SQL-запроса с параметрами-заполнителями
и ждёт, пока завершится подготовка запроса
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>PgSql\Result</type><type>false</type></type><methodname>pg_prepare</methodname>
<methodparam choice="opt"><type>PgSql\Connection</type><parameter>connection</parameter></methodparam>
<methodparam><type>string</type><parameter>stmtname</parameter></methodparam>
<methodparam><type>string</type><parameter>query</parameter></methodparam>
</methodsynopsis>
<para>
Функция <function>pg_prepare</function> подготавливает SQL-запрос,
который затем запустит функция <function>pg_execute</function>
или <function>pg_send_execute</function>. Функция помогает разбирать
и планировать команды только один раз, а не каждый раз при выполнении,
а потом многократно выполнять такие команды.
Функция <function>pg_prepare</function> поддерживает соединения только с БД PostgreSQL 7.4
или новее; функция не будет работать c серверами предыдущих версий.
</para>
<para>
Функция создает подготовленный запрос с названием <parameter>stmtname</parameter>
из строки <parameter>query</parameter>, которая содержит одну команду.
Значение параметра <parameter>stmtname</parameter> указывают как пустую строку <literal>""</literal>,
чтобы создать безымянный запрос, который автоматически заменяет предыдущий безымянный запрос;
в остальных случаях попытка назвать запрос именем, которое уже определили в текущей сессии,
вызовет ошибку. Параметры, которые передали при выполнении запроса,
указывают на обозначения <literal>$1</literal>, <literal>$2</literal> и т. д. в запросе <parameter>query</parameter>.
</para>
<para>
Подготовленные для функции <function>pg_prepare</function> запросы создают также SQL-командой
<literal>PREPARE</literal>, но функция <function>pg_prepare</function> гибче,
поскольку не заставляет указывать типы параметров.
Хотя в PHP нет функции для удаления подготовленного запроса,
это сделает SQL-команда <literal>DEALLOCATE</literal>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>connection</parameter></term>
<listitem>
&pgsql.parameter.connection-with-unspecified-default;
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>stmtname</parameter></term>
<listitem>
<para>
Уникальное в пределах сессии имя, которым функция назовёт подготовленный запрос.
Функция создаст безымянный запрос, который перезапишет предыдущий безымянный запрос
текущей сессии, если задали пустую строку <literal>""</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>query</parameter></term>
<listitem>
<para>
Один параметризованный SQL-запрос; несколько запросов через точку с запятой не поддерживаются.
Параметры, которые передали, относятся к обозначениям запроса <literal>$1</literal>, <literal>$2</literal> и т. д.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает экземпляр <classname>PgSql\Result</classname> в случае успешного выполнения&return.falseforfailure;.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
&pgsql.changelog.return-result-object;
&pgsql.changelog.connection-object;
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример подготовки запроса функцией <function>pg_prepare</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Подключение к базе данных "mary"
$dbconn = pg_connect("dbname=mary");
// Подготовка запроса
$result = pg_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');
// Запуск запроса на выполнение. Обратите внимание: спецсимволы в строке "Joe's Widgets"
// не заэкранированы
$result = pg_execute($dbconn, "my_query", array("Joe's Widgets"));
// Запуск на выполнение того же запроса, но с другим параметром
$result = pg_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>pg_execute</function></member>
<member><function>pg_send_execute</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
-->