-
Notifications
You must be signed in to change notification settings - Fork 79
/
Copy pathmysql-query.xml
198 lines (184 loc) · 6.16 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
198
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: bd3486422338656009b890c04ff132f1c1a61176 Maintainer: takagi Status: ready -->
<!-- CREDITS: hirokawa -->
<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_array</function> やその他の関数に渡します。
</para>
<para>
SELECT 文によって返された行の数を知るには
<function>mysql_num_rows</function> を用います。また
DELETE, INSERT, REPLACE, または UPDATE 文で変更された行の数を
知るには <function>mysql_affected_rows</function> を用います。
</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('Invalid query: ' . 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 = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $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
-->