| 12
 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
 
 | <?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="pdostatement.nextrowset" xmlns="http://docbook.org/ns/docbook">
 <refnamediv>
  <refname>PDOStatement::nextRowset</refname>
  <refpurpose>
   Advances to the next rowset in a multi-rowset statement handle
  </refpurpose>
 </refnamediv>
 <refsect1 role="description">
  &reftitle.description;
  <methodsynopsis role="PDOStatement">
   <modifier>public</modifier> <type>bool</type><methodname>PDOStatement::nextRowset</methodname>
   <void/>
  </methodsynopsis>
  <para>
   Some database servers support stored procedures that return more than one
   rowset (also known as a result set).
   <methodname>PDOStatement::nextRowset</methodname> enables you to access the
   second and subsequent rowsets associated with a PDOStatement object. Each
   rowset can have a different set of columns from the preceding rowset.
  </para>
 </refsect1>
 <refsect1 role="parameters">
  &reftitle.parameters;
  &no.function.parameters;
 </refsect1>
 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   &return.success;
  </para>
 </refsect1>
 <refsect1 role="examples">
  &reftitle.examples;
  <para>
   <example>
    <title>Fetching multiple rowsets returned from a stored procedure</title>
    <para>
     The following example shows how to call a stored procedure,
     <literal>MULTIPLE_ROWSETS</literal>, which returns three rowsets. We use a 
     <link linkend="control-structures.do.while">do-while</link> loop to
     call the <methodname>PDOStatement::nextRowset</methodname> method until it
     returns &false; and terminates the loop when no more rowsets are available.
    </para>
    <programlisting role="php">
<![CDATA[
<?php
$sql = 'CALL multiple_rowsets()';
$stmt = $conn->query($sql);
$i = 1;
do {
    $rowset = $stmt->fetchAll(PDO::FETCH_NUM);
    if ($rowset) {
        printResultSet($rowset, $i);
    }
    $i++;
} while ($stmt->nextRowset());
function printResultSet(&$rowset, $i) {
    print "Result set $i:\n";
    foreach ($rowset as $row) {
        foreach ($row as $col) {
            print $col . "\t";
        }
        print "\n";
    }
    print "\n";
}
?>
]]>
    </programlisting>
    &example.outputs;
    <screen>
<![CDATA[
Result set 1:
apple    red
banana   yellow
Result set 2:
orange   orange    150
banana   yellow    175
Result set 3:
lime     green
apple    red
banana   yellow
]]>
    </screen>
   </example>
  </para>
 </refsect1>
 <refsect1 role="seealso">
  &reftitle.seealso;
  <para>
   <simplelist>
    <member><methodname>PDOStatement::columnCount</methodname></member>
    <member><methodname>PDOStatement::execute</methodname></member>
    <member><methodname>PDOStatement::getColumnMeta</methodname></member>
    <member><methodname>PDO::query</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
-->
 |