-
Notifications
You must be signed in to change notification settings - Fork 59
Expand file tree
/
Copy pathpg-query-params.xml
More file actions
181 lines (171 loc) · 5.97 KB
/
pg-query-params.xml
File metadata and controls
181 lines (171 loc) · 5.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 5f1a92089fa4efe81e9777f87f9ed93f4853898b Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.pg-query-params" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>pg_query_params</refname>
<refpurpose>
Envía un comando al servidor y espera el resultado, con la capacidad de
pasar parámetros por separado del texto SQL de la consulta
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>PgSql\Result</type><type>false</type></type><methodname>pg_query_params</methodname>
<methodparam choice="opt"><type>PgSql\Connection</type><parameter>connection</parameter></methodparam>
<methodparam><type>string</type><parameter>query</parameter></methodparam>
<methodparam><type>array</type><parameter>params</parameter></methodparam>
</methodsynopsis>
<para>
Envía un comando al servidor y espera el resultado, con la capacidad de
pasar parámetros por separado del texto SQL de la consulta.
</para>
<para>
<function>pg_query_params</function> es como <function>pg_query</function>,
pero ofrece funcionalidades adicionales: los valores de los parámetros
pueden especificarse por separado de la línea de comando propia.
</para>
<para>
Si se utilizan parámetros, se refieren a $1, $2, etc. en
<parameter>query</parameter>. El mismo parámetro puede aparecer más de una vez
en la consulta <parameter>query</parameter>; se utilizará el mismo valor
en ese caso. <parameter>params</parameter> especifica los
valores actuales de los parámetros. Un valor &null; en este array
significa que el parámetro correspondiente es SQL &null;.
</para>
<para>
La principal ventaja de <function>pg_query_params</function> sobre
<function>pg_query</function> es que los valores de los parámetros pueden
separarse de la consulta <parameter>query</parameter>, por lo tanto,
se evitan los escapes de caracteres tediosos y propensos a errores.
A diferencia de <function>pg_query</function>,
<function>pg_query_params</function> permite solo un comando
SQL en la cadena dada. (Puede haber puntos y coma en
el interior pero no más de un comando.)
</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>query</parameter></term>
<listitem>
<para>
La consulta SQL con sus parámetros. Debe contener solo una
consulta. Múltiples consultas separadas por puntos y coma no están
permitidas. Si se utilizan parámetros, se refieren a
$1, $2, etc.
</para>
<para>
Los valores proporcionados por el usuario siempre deben
pasarse como parámetros, y no interpolados en la cadena de
consulta, donde pueden potencialmente formar
<link linkend="security.database.sql-injection">inyecciones SQL</link>
e introducir errores cuando estos datos contienen comillas.
Si por alguna razón no se pueden utilizar parámetros,
asegúrese de que los valores interpolados estén
<link linkend="function.pg-escape-string">correctamente escapados</link>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>params</parameter></term>
<listitem>
<para>
Un array de valores de parámetros para sustituir las variables $1, $2, etc.
en la consulta preparada original. El número de elementos presentes en
el array debe coincidir con el número de variables a reemplazar.
</para>
<para>
Los valores esperados para los campos <literal>bytea</literal> no son
soportados como parámetros. Utilice en su lugar la función
<function>pg_escape_bytea</function> o utilice las funciones sobre los
objetos grandes.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Una instancia <classname>PgSql\Result</classname> en caso de éxito, &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>Ejemplo con <function>pg_query_params</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Conexión a una base de datos llamada "marie"
$dbconn = pg_connect("dbname=marie");
// Busca todas las tiendas llamadas Joe's Widgets. Note que no es
// necesario escapar la cadena "Joe's Widgets"
$result = pg_query_params($dbconn, 'SELECT * FROM tiendas WHERE nombre = $1', array("Joe's Widgets"));
// Comparación usando pg_query
$str = pg_escape_string("Joe's Widgets");
$result = pg_query($dbconn, "SELECT * FROM tiendas WHERE nombre = '{$str}'");
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>pg_query</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
-->