-
Notifications
You must be signed in to change notification settings - Fork 56
/
closecursor.xml
141 lines (129 loc) · 4.35 KB
/
closecursor.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
<?xml version="1.0" encoding="utf-8" ?>
<!-- $Revision$ -->
<!-- EN-Revision: 082ddc19f53e6e254010de1a1fbbe485ff744ec1 Maintainer: takagi Status: ready -->
<!-- CREDITS: shimooka -->
<refentry xml:id="pdostatement.closecursor" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>PDOStatement::closeCursor</refname>
<refpurpose>
カーソルを閉じてステートメントを再実行できるようにする
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis role="PDOStatement">
<modifier>public</modifier> <type>bool</type><methodname>PDOStatement::closeCursor</methodname>
<void/>
</methodsynopsis>
<para>
<methodname>PDOStatement::closeCursor</methodname> は、
他の SQL ステートメントを発行できるようにサーバーへの接続を解放しますが、
ステートメントは再実行可能な状態のまま残されます。
</para>
<para>
このメソッドは以前に実行された PDOStatement
オブジェクトが行をまだフェッチしていない場合に PDOStatement
オブジェクトの実行をサポートしていないデータベースドライバに対して有用です。
もし使用しているデータベースドライバがこの制限を受ける場合、
out-of-sequence エラーが出力されます。
</para>
<para>
<methodname>PDOStatement::closeCursor</methodname> は、
オプションのドライバ固有のメソッド (最大の効率を得るため)
もしくはドライバ固有の関数がインストールされていない場合の汎用的な
PDO フォールバックとして実装されています。
汎用的な PDO フォールバックは、PHP
スクリプト中に以下のようなコードを書くことと意味的に等価です。
<programlisting role="php">
<![CDATA[
<?php
do {
while ($stmt->fetch())
;
if (!$stmt->nextRowset())
break;
} while (true);
?>
]]>
</programlisting>
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
&no.function.parameters;
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
&pdo.errors;
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><methodname>PDOStatement::closeCursor</methodname> の例</title>
<para>
以下の例では、PDOStatement オブジェクト <varname>$stmt</varname>
は複数の行を返しますが、このアプリケーションは先頭行のみフェッチし、
PDOStatement オブジェクトをフェッチしていない行がある状態のままにします。
このアプリケーションがが全てのデータベースドライバで動作するよう、
PDOStatement オブジェクト <varname>$otherStmt</varname> を実行する前に
<varname>$stmt</varname> に対して
<methodname>PDOStatement::closeCursor</methodname>
の呼び出しを挿入しています。
</para>
<programlisting role="php">
<![CDATA[
<?php
/* PDOStatement オブジェクトを生成する */
$stmt = $dbh->prepare('SELECT foo FROM bar');
/* 第二の PDOStatement オブジェクトを生成する */
$otherStmt = $dbh->prepare('SELECT foobaz FROM foobar');
/* 最初の文を実行する */
$stmt->execute();
/* 結果から先頭行のみフェッチする */
$stmt->fetch();
/* 続く closeCursor() のコールはいくつかのドライバでは必要となる */
$stmt->closeCursor();
/* ここで第二の文を実行することができる */
$otherStmt->execute();
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><methodname>PDOStatement::execute</methodname></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
-->