-
Notifications
You must be signed in to change notification settings - Fork 52
Expand file tree
/
Copy pathconstruct.xml
More file actions
369 lines (346 loc) · 13.9 KB
/
construct.xml
File metadata and controls
369 lines (346 loc) · 13.9 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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 9dadf74254fa743db43e73ab3f5a3d441c271ab1 Maintainer: samesch Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="mysqli.construct" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>mysqli::__construct</refname>
<refname>mysqli::connect</refname>
<refname>mysqli_connect</refname>
<refpurpose>Baut eine neue Verbindung zum MySQL-Server auf</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<para>&style.oop;</para>
<constructorsynopsis role="mysqli">
<modifier>public</modifier> <methodname>mysqli::__construct</methodname>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>hostname</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>username</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><modifier role="attribute">#[\SensitiveParameter]</modifier><type class="union"><type>string</type><type>null</type></type><parameter>password</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>database</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>port</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>socket</parameter><initializer>&null;</initializer></methodparam>
</constructorsynopsis>
<methodsynopsis role="mysqli">
<modifier>public</modifier> <type>bool</type><methodname>mysqli::connect</methodname>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>hostname</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>username</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><modifier role="attribute">#[\SensitiveParameter]</modifier><type class="union"><type>string</type><type>null</type></type><parameter>password</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>database</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>port</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>socket</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>&style.procedural;</para>
<methodsynopsis>
<type class="union"><type>mysqli</type><type>false</type></type><methodname>mysqli_connect</methodname>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>hostname</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>username</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><modifier role="attribute">#[\SensitiveParameter]</modifier><type class="union"><type>string</type><type>null</type></type><parameter>password</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>database</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>port</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>socket</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
Baut eine Verbindung zum MySQL-Server auf.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>hostname</parameter></term>
<listitem>
<para>
Kann entweder ein Hostname oder eine IP-Adresse sein. Wenn diesem
Parameter der Wert &null; übergeben wird, wird der Wert von
<link linkend="ini.mysqli.default-host">mysqli.default_host</link>
übernommen. Wenn möglich, werden Pipes anstelle des TCP/IP-Protokolls
verwendet. Das TCP/IP-Protokoll wird verwendet, wenn ein Hostname und
eine Portnummer zusammen angegeben werden, &zb;
<literal>localhost:3308</literal>.
</para>
<para>
Wenn dem Host ein <literal>p:</literal> vorangestellt wird, wird eine
persistente (dauerhafte) Verbindung geöffnet. Bei Verbindungen, die aus
dem Verbindungs-Pool geöffnet werden, wird automatisch die Funktion
<function>mysqli_change_user</function> aufgerufen.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>username</parameter></term>
<listitem>
<para>
Der MySQL-Benutzername oder &null;, um den Benutzernamen aus der
INI-Option
<link linkend="ini.mysqli.default-user">mysqli.default_user</link> zu
übernehmen.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>password</parameter></term>
<listitem>
<para>
Das MySQL-Passwort oder &null;, um den Benutzernamen aus der INI-Option
<link linkend="ini.mysqli.default-pw">mysqli.default_pw</link> zu
übernehmen.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>database</parameter></term>
<listitem>
<para>
Die Datenbank, die standardmäßig bei Abfragen verwendet werden soll,
oder &null;.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>port</parameter></term>
<listitem>
<para>
Die Portnummer, über die versucht wird, eine Verbindung mit dem
MySQL-Server herzustellen, oder &null;, um den Port aus der INI-Option
<link linkend="ini.mysqli.default-port">mysqli.default_port</link> zu
übernehmen.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>socket</parameter></term>
<listitem>
<para>
Der Socket oder die benannte Pipe an, der/die verwendet werden soll,
oder &null;, um den Socket aus der INI-Option
<link linkend="ini.mysqli.default-socket">mysqli.default_socket</link>
zu übernehmen.
</para>
<note>
<para>
Mit dem Parameter <parameter>socket</parameter> wird nicht explizit
festgelegt, welche Art von Verbindung bei der Verbindung mit dem
MySQL-Server verwendet werden soll. Wie die Verbindung zur
MySQL-Datenbank hergestellt wird, wird durch den Parameter
<parameter>hostname</parameter> bestimmt.
</para>
</note>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
<methodname>mysqli::__construct</methodname> gibt immer ein Objekt zurück,
das die Verbindung zu einem MySQL-Server repräsentiert, unabhängig davon, ob
sie erfolgreich ist oder nicht.
</para>
<para>
<function>mysqli_connect</function> gibt ein Objekt zurück, das die
Verbindung zu einem MySQL-Server repräsentiert. &return.falseforfailure;
</para>
<para>
<methodname>mysqli::connect</methodname> gibt bei Erfolg &true; zurück.
&return.falseforfailure; Vor PHP 8.1.0 wird bei Erfolg &null; zurückgegeben.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
&mysqli.conditionalexception;
</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.1.0</entry>
<entry>
<methodname>mysqli::connect</methodname> gibt bei Erfolg nun &true;
anstelle von &null; zurück.
</entry>
</row>
<row>
<entry>7.4.0</entry>
<entry>
Alle Parameter sind nun nullable (akzeptieren den &null;-Wert).
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title><methodname>mysqli::__construct</methodname>-Beispiel</title>
<para>&style.oop;</para>
<programlisting role="php">
<![CDATA[
<?php
/* Bevor versucht wird, eine Verbindung aufzubauen, sollte die Meldung von Fehlern für mysqli aktiviert werden */
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
/* Einstellen des gewünschten Zeichensatzes nach dem Aufbau der Verbindung */
$mysqli->set_charset('utf8mb4');
printf("Erfolg... %s\n", $mysqli->host_info);
]]>
</programlisting>
<para>&style.procedural;</para>
<programlisting role="php">
<![CDATA[
<?php
/* Bevor versucht wird, eine Verbindung aufzubauen, sollte die Meldung von Fehlern für mysqli aktiviert werden */
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
/* Einstellen des gewünschten Zeichensatzes nach dem Aufbau der Verbindung */
mysqli_set_charset($mysqli, 'utf8mb4');
printf("Erfolg... %s\n", mysqli_get_host_info($mysqli));
]]>
</programlisting>
&examples.outputs.similar;
<screen>
<![CDATA[
Erfolg... localhost via TCP/IP
]]>
</screen>
</example>
<example>
<title>Erweitern der Klasse mysqli</title>
<programlisting role="php">
<![CDATA[
<?php
class FooMysqli extends mysqli {
public function __construct($host, $user, $pass, $db, $port, $socket, $charset) {
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
parent::__construct($host, $user, $pass, $db, $port, $socket);
$this->set_charset($charset);
}
}
$db = new FooMysqli('localhost', 'my_user', 'my_password', 'my_db', 3306, null, 'utf8mb4');
]]>
</programlisting>
</example>
<example>
<title>Manuelle Fehlerbehandlung</title>
<para>
Falls die Meldung von Fehlern deaktiviert ist, ist der Entwickler dafür
verantwortlich, Fehler zu überprüfen und zu behandeln
</para>
<para>&style.oop;</para>
<programlisting role="php">
<![CDATA[
<?php
error_reporting(0);
mysqli_report(MYSQLI_REPORT_OFF);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
if ($mysqli->connect_errno) {
throw new RuntimeException('mysqli-Verbindungsfehler: ' . $mysqli->connect_error);
}
/* Einstellen des gewünschten Zeichensatzes nach dem Aufbau der Verbindung */
$mysqli->set_charset('utf8mb4');
if ($mysqli->errno) {
throw new RuntimeException('mysqli-Fehler: ' . $mysqli->error);
}
]]>
</programlisting>
<para>&style.procedural;</para>
<programlisting role="php">
<![CDATA[
<?php
error_reporting(0);
mysqli_report(MYSQLI_REPORT_OFF);
$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
if (mysqli_connect_errno()) {
throw new RuntimeException('mysqli-Verbindungsfehler: ' . mysqli_connect_error());
}
/* Einstellen des gewünschten Zeichensatzes nach dem Aufbau der Verbindung */
mysqli_set_charset($mysqli, 'utf8mb4');
if (mysqli_errno($mysqli)) {
throw new RuntimeException('mysqli-Fehler: ' . mysqli_error($mysqli));
}
]]>
</programlisting>
</example>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
&mysqli.charset.note;
<note>
<para>
&style.oop;: Wenn die Verbindung fehlschlägt, wird trotzdem ein Objekt
zurückgegeben. Um zu prüfen, ob die Verbindung fehlgeschlagen ist, kann
wie in den vorangegangenen Beispielen entweder die Funktion
<function>mysqli_connect_error</function> oder die Eigenschaft
<link linkend="mysqli.connect-error">mysqli->connect_error</link>
verwendet werden.
</para>
</note>
<note>
<para>
Wenn es nötig ist, Optionen zu setzen, &zb; das Zeitlimit für die
Verbindung, muss stattdessen die Funktion
<function>mysqli_real_connect</function> verwendet werden.
</para>
</note>
<note>
<para>
Der Aufruf des Konstruktors ohne Parameter entspricht dem Aufruf von
<function>mysqli_init</function>.
</para>
</note>
<note>
<para>
Der Fehler "Can't create TCP/IP socket (10106)" bedeutet in der Regel,
dass in der Konfigurationsanweisung
<link linkend="ini.variables-order">variables_order</link> das Zeichen
<literal>E</literal> fehlt. Wenn unter Windows die Systemumgebung nicht
kopiert wird, ist die Umgebungsvariable <literal>SYSTEMROOT</literal>
nicht verfügbar und PHP hat dann ein Problem beim Laden von Winsock.
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>mysqli_real_connect</function></member>
<member><function>mysqli_options</function></member>
<member><function>mysqli_connect_errno</function></member>
<member><function>mysqli_connect_error</function></member>
<member><function>mysqli_close</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
-->