-
Notifications
You must be signed in to change notification settings - Fork 39
/
pg-query-params.xml
186 lines (176 loc) · 6.24 KB
/
pg-query-params.xml
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
182
183
184
185
186
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: c2eca73ef79ebe78cebb34053e41b565af504c4f Maintainer: conni Status: ready -->
<refentry xml:id="function.pg-query-params" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>pg_query_params</refname>
<refpurpose>
Sendet ein Kommando zum Server und wartet seine Ausführung ab. Getrennt vom
SQL-Kommando können dabei Parameter übergeben werden
</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>
Sendet ein Kommando zum Server und wartet seine Ausführung ab. Getrennt vom
SQL-Kommando können dabei Parameter übergeben werden.
</para>
<para>
<function>pg_query_params</function> ist ähnlich wie
<function>pg_query</function>, bietet aber zusätzlich die Möglichkeit,
Parameterwerte ausserhalb des SQL-Kommandos separat zu übergeben.
<function>pg_query_params</function> wird nur für Verbindungen zu
PostgreSQL ab der Version 7.4 unterstützt und schlägt bei allen niedrigeren
Versionen fehl.
</para>
<para>
Falls irgendwelche Parameter übergeben wurden, werden diese in
<parameter>query</parameter> als $1, $2 usw. referenziert. Der gleiche
Parameter darf mehrmals in <parameter>query</parameter> auftauchen; in
diesem Fall wird der selbe Wert verwendet. Im Array
<parameter>params</parameter> werden die aktuellen Parameterwerte
übergeben. Der Wert &null; in diesem Array repräsentiert den SQL-Wert
<literal>NULL</literal>.
</para>
<para>
Der Hauptvorteil von <function>pg_query_params</function> gegenüber
<function>pg_query</function> liegt darin, dass Parameterwerte vom
SQL-Kommando getrennt übergeben werden können und damit das fehlerträchtige
und lästige Maskieren und Setzen von Anführungszeichen vermieden werden
kann. Im Unterschied zu <function>pg_query</function> ist bei
<function>pg_query_params</function> nur ein einziges SQL-Kommando erlaubt.
(Es können auch Semikolons enthalten sein, aber nicht mehr als ein
nichtleeres Kommando.)
</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>
Die parametrisierte Abfrage. Diese darf nur ein einziges SQL-Kommando
enthalten (mehrere Kommandos, durch Semikolon getrennt, sind nicht
zulässig). Falls Parameter übergeben werden, werden sie als $1, $2, ...
referenziert.
</para>
<para>
Anwenderdaten sollten immer als Parameter übergeben werden, und nicht
in die Abfragezeichenkette interpoliert werden, wo sie mögliche <link
linkend="security.database.sql-injection">SQL-Injection</link>-Angriffsvektoren
bilden und Bugs einführen, wenn die zu behandelnden Daten
Anführungszeichen enthalten. Wenn aus irgendeinem Grund Parameter nicht
verwendet werden können, ist sicherzustellen, dass Werte <link
linkend="function.pg-escape-string">ordnungsgemäß maskiert</link> sind.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>params</parameter></term>
<listitem>
<para>
Ein Array mit Parameterwerten, mit denen die Platzhalter $1, $2 usw. in
der ursprünglichen vorbereiteten Abfrage ersetzt werden. Die Anzahl der
Elemente dieses Arrays muss mit der Anzahl der Platzhalter
übereinstimmen.
</para>
<para>
Werte, die für <literal>bytea</literal> Felder vorgesehen sind, werden
nicht als Parameter unterstützt. Statt dessen sind
<function>pg_escape_bytea</function> oder die Funktionen für große
Objekte zu verwenden.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Bei Erfolg wird eine <classname>PgSql\Result</classname>-Instanz zurückgegeben.
&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_query_params</function>-Beispiel</title>
<programlisting role="php">
<![CDATA[
<?php
// Verbindung zu einer Datenbank namens "mary" aufbauen
$dbconn = pg_connect("dbname=mary");
// Alle Shops mit dem Namen Joe's Widgets finden. Beachten Sie, dass es
// nicht nötig ist, den String "Joe's Widgets" zu maskieren.
$result = pg_query_params($dbconn, 'SELECT * FROM shops WHERE name = $1', array("Joe's Widgets"));
// Vergleich mit pg_query
$str = pg_escape_string("Joe's Widgets");
$result = pg_query($dbconn, "SELECT * FROM shops WHERE name = '{$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
-->