-
Notifications
You must be signed in to change notification settings - Fork 76
/
Copy pathmysql-query.xml
197 lines (184 loc) · 7.13 KB
/
mysql-query.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
187
188
189
190
191
192
193
194
195
196
197
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: bd3486422338656009b890c04ff132f1c1a61176 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.mysql-query" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>mysql_query</refname>
<refpurpose>Посылает запрос MySQL</refpurpose>
</refnamediv>
<refsynopsisdiv>
<warning>
&mysql.alternative.note;
<simplelist role="alternatives">
<member><function>mysqli_query</function></member>
<member><methodname>PDO::query</methodname></member>
</simplelist>
</warning>
</refsynopsisdiv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>mixed</type><methodname>mysql_query</methodname>
<methodparam><type>string</type><parameter>query</parameter></methodparam>
<methodparam choice="opt"><type>resource</type><parameter>link_identifier</parameter><initializer>NULL</initializer></methodparam>
</methodsynopsis>
<para>
<function>mysql_query</function> посылает один запрос
(посылка нескольких запросов не поддерживается) активной базе
данных сервера, на который ссылается переданный дескриптор
<parameter>link_identifier</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>query</parameter></term>
<listitem>
<para>
SQL-запрос
</para>
<para>
Запрос не должен заканчиваться точкой с запятой.
Данные в запросе должны быть <link linkend="function.mysql-real-escape-string">корректно проэкранированы</link>.
</para>
</listitem>
</varlistentry>
&mysql.linkid.description;
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Для запросов SELECT, SHOW, DESCRIBE, EXPLAIN и других запросов,
возвращающих результат из нескольких рядов,
<function>mysql_query</function> возвращает дескриптор результата
запроса (<type>resource</type>), или &false; в случае возникновения ошибки.
</para>
<para>
Для других типов SQL-запросов, INSERT, UPDATE, DELETE, DROP и других,
<function>mysql_query</function> возвращает &true; в случае успешного выполнения
и &false; в случае возникновения ошибки.
</para>
<para>
Полученный дескриптор результата нужно передать в функцию
<function>mysql_fetch_assoc</function> или любую другую функцию,
работающую с результатами запросов.
</para>
<para>
Используйте <function>mysql_num_rows</function> для выяснения
количества рядов в результате SELECT-запроса или
<function>mysql_affected_rows</function> для выяснения количества
обработанных рядов запросами DELETE, INSERT, REPLACE и UPDATE.
</para>
<para>
<function>mysql_query</function> также завершится с ошибкой и
вернёт &false;, если у пользователя нет доступа к какой-либо из
таблиц, фигурирующих в запросе.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Неверный запрос</title>
<para>
Следующий запрос составлен неправильно и
<function>mysql_query</function> вернёт &false;.
</para>
<programlisting role="php">
<![CDATA[
<?php
$result = mysql_query('SELECT * WHERE 1 = 1');
if (!$result) {
die('Неверный запрос: ' . mysql_error());
}
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Верный запрос</title>
<para>
Следующий запрос верен, поэтому <function>mysql_query</function>
вернёт <type>resource</type>.
</para>
<programlisting role="php">
<![CDATA[
<?php
// Эти данные, к примеру, могли быть получены от пользователя
$firstname = 'fred';
$lastname = 'fox';
// Формируем запрос
// Это лучший способ выполнить SQL-запрос
// Ещё примеры можно найти в документации mysql_real_escape_string()
$query = sprintf("SELECT firstname, lastname, address, age FROM friends
WHERE firstname='%s' AND lastname='%s'",
mysql_real_escape_string($firstname),
mysql_real_escape_string($lastname));
// Выполняем запрос
$result = mysql_query($query);
// Проверяем результат
// Это показывает реальный запрос, посланный к MySQL, а также ошибку. Удобно при отладке.
if (!$result) {
$message = 'Неверный запрос: ' . mysql_error() . "\n";
$message .= 'Запрос целиком: ' . $query;
die($message);
}
// Используем результат
// Попытка напечатать $result не выведет информацию, которая в нем хранится
// Необходимо использовать какую-либо mysql-функцию, работающую с результатом запроса
// Смотрите также mysql_result(), mysql_fetch_array(), mysql_fetch_row() и т.п.
while ($row = mysql_fetch_assoc($result)) {
echo $row['firstname'];
echo $row['lastname'];
echo $row['address'];
echo $row['age'];
}
// Освобождаем ресурсы, ассоциированные с результатом
// Это делается автоматически в конце скрипта
mysql_free_result($result);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>mysql_connect</function></member>
<member><function>mysql_error</function></member>
<member><function>mysql_real_escape_string</function></member>
<member><function>mysql_result</function></member>
<member><function>mysql_fetch_assoc</function></member>
<member><function>mysql_unbuffered_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
-->