File: closecursor.xml

package info (click to toggle)
php-doc 20100521-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze, wheezy
  • size: 59,992 kB
  • ctags: 4,085
  • sloc: xml: 796,833; php: 21,338; cpp: 500; sh: 117; makefile: 58; awk: 28
file content (128 lines) | stat: -rw-r--r-- 3,592 bytes parent folder | download
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
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision: 297028 $ -->
<refentry xml:id="pdostatement.closecursor" xmlns="http://docbook.org/ns/docbook">
 <refnamediv>
  <refname>PDOStatement->closeCursor</refname>
  <refpurpose>
   Closes the cursor, enabling the statement to be executed again.
  </refpurpose>
 </refnamediv>
 <refsect1 role="description">
  &reftitle.description;
  <methodsynopsis>
   <type>bool</type><methodname>PDOStatement::closeCursor</methodname>
   <void/>
  </methodsynopsis>

  <para>
   <function>PDOStatement::closeCursor</function> frees up the connection
   to the server so that other SQL statements may be issued, but leaves the
   statement in a state that enables it to be executed again.
  </para>
  <para>
   This method is useful for database drivers that do not support executing
   a PDOStatement object when a previously executed PDOStatement object still
   has unfetched rows. If your database driver suffers from this limitation,
   the problem may manifest itself in an out-of-sequence error.
  </para>
  <para>
   <function>PDOStatement::closeCursor</function> is implemented either as an
   optional driver specific method (allowing for maximum efficiency), or as
   the generic PDO fallback if no driver specific function is installed.
   The PDO generic fallback is semantically the same as writing the following
   code in your PHP script:
   <programlisting role="php">
<![CDATA[
<?php
do {
    while ($stmt->fetch())
        ;
    if (!$stmt->nextRowset())
        break;
} while (true);
?>
]]>
   </programlisting>
  </para>

 </refsect1>

 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   &return.success;
  </para>
 </refsect1>

 <refsect1 role="examples">
  &reftitle.examples;
  <para>
   <example>
    <title>A <function>PDOStatement::closeCursor</function> example</title>
    <para>
     In the following example, the <varname>$stmt</varname> PDOStatement
     object returns multiple rows but the application fetches only the first
     row, leaving the PDOStatement object in a state of having unfetched rows.
     To ensure that the application will work with all database drivers, the
     author inserts a call to <function>PDOStatement::closeCursor</function>
     on <varname>$stmt</varname> before executing the
     <varname>$otherStmt</varname> PDOStatement object.
    </para>
    <programlisting role="php">
<![CDATA[
<?php
/* Create a PDOStatement object */
$stmt = $dbh->prepare('SELECT foo FROM bar');

/* Create a second PDOStatement object */
$otherStmt = $dbh->prepare('SELECT foobaz FROM foobar');

/* Execute the first statement */
$stmt->execute();

/* Fetch only the first row from the results */
$stmt->fetch();

/* The following call to closeCursor() may be required by some drivers */
$stmt->closeCursor();

/* Now we can execute the second statement */
$otherStmt->execute();
?>
]]>
    </programlisting>
   </example>
  </para>
 </refsect1>

 <refsect1 role="seealso">
  &reftitle.seealso;
  <para>
   <simplelist>
    <member><function>PDOStatement::execute</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
-->