php-doc-en/reference/sesam/functions/sesam-fetch-array.xml
Hannes Magnusson c030e2adf7 Upgrade to DocBook5:
- All id attributes are now xml:id
 - Add docbook namespace to all root elements
 - Replace <ulink /> with <link xlink:href />
 - Minor markup fixes here and there


git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@238160 c90b9560-bf6c-de11-be94-00142212c4b1
2007-06-20 22:25:43 +00:00

256 lines
8.3 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.10 $ -->
<refentry xml:id="function.sesam-fetch-array" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>sesam_fetch_array</refname>
<refpurpose>Fetch one row as an associative array</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>array</type><methodname>sesam_fetch_array</methodname>
<methodparam><type>string</type><parameter>result_id</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>whence</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>offset</parameter></methodparam>
</methodsynopsis>
<para>
<function>sesam_fetch_array</function> is an alternative version
of <function>sesam_fetch_row</function>. Instead of storing the
data in the numeric indices of the result array, it stores the
data in associative indices, using the field names as keys.
</para>
<para>
<function>sesam_fetch_array</function> fetches one row of data
from the result associated with the specified result identifier.
The row is returned as an associative array. Each result column
is stored with an associative index equal to its column
(aka. field) name. The column names are converted to lower case.
</para>
<para>
Columns without a field name (e.g., results of arithmetic
operations) and empty fields are not stored in the array. Also,
if two or more columns of the result have the same column names,
the later column will take precedence. In this situation, either
call <function>sesam_fetch_row</function> or make an alias for
the column.
<informalexample>
<programlisting role="sesam">
<![CDATA[
SELECT TBL1.COL AS FOO, TBL2.COL AS BAR FROM TBL1, TBL2
]]>
</programlisting>
</informalexample>
</para>
<para>
A special handling allows fetching "multiple field" columns
(which would otherwise all have the same column names). For each
column of a "multiple field", the index name is constructed by
appending the string "(n)" where n is the sub-index of the
multiple field column, ranging from 1 to its declared repetition
factor. The indices are NOT zero based, in order to match the
nomenclature used in the respective query syntax. For a column
declared as:
<informalexample>
<programlisting role="sesam">
<![CDATA[
CREATE TABLE ... ( ... MULTI(3) INT )
]]>
</programlisting>
</informalexample>
the associative indices used for the individual "multiple field"
columns would be <literal>"multi(1)"</literal>,
<literal>"multi(2)"</literal>, and <literal>"multi(3)"</literal>
respectively.
</para>
<para>
Subsequent calls to <function>sesam_fetch_array</function> would
return the next (or prior, or n'th next/prior, depending on the
scroll attributes) row in the result set, or &false; if there are no more rows.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>result_id</parameter></term>
<listitem>
<para>
A valid result id returned by <function>sesam_query</function>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>whence</parameter></term>
<listitem>
<para>
<parameter>whence</parameter> is an optional
parameter for a fetch operation on "scrollable" cursors, which
can be set to the following predefined constants:
<table>
<title>Valid values for <parameter>"whence"</parameter> parameter</title>
<tgroup cols="3">
<thead>
<row>
<entry>Value</entry>
<entry>Constant</entry>
<entry>Meaning</entry>
</row>
</thead>
<tbody>
<row>
<entry>0</entry>
<entry><constant>SESAM_SEEK_NEXT</constant></entry>
<entry>
read sequentially (after fetch, the internal default is set
to <constant>SESAM_SEEK_NEXT</constant>)
</entry>
</row>
<row>
<entry>1</entry>
<entry><constant>SESAM_SEEK_PRIOR</constant></entry>
<entry>
read sequentially backwards (after fetch, the internal
default is set to <constant>SESAM_SEEK_PRIOR</constant>)
</entry>
</row>
<row>
<entry>2</entry>
<entry><constant>SESAM_SEEK_FIRST</constant></entry>
<entry>
rewind to first row (after fetch, the default is set to
<constant>SESAM_SEEK_NEXT</constant>)
</entry>
</row>
<row>
<entry>3</entry>
<entry><constant>SESAM_SEEK_LAST</constant></entry>
<entry>
seek to last row (after fetch, the default is set to
<constant>SESAM_SEEK_PRIOR</constant>)
</entry>
</row>
<row>
<entry>4</entry>
<entry><constant>SESAM_SEEK_ABSOLUTE</constant></entry>
<entry>
seek to absolute row number given as
<parameter>offset</parameter> (Zero-based. After fetch, the
internal default is set to
<constant>SESAM_SEEK_ABSOLUTE</constant>, and the internal
offset value is auto-incremented)
</entry>
</row>
<row>
<entry>5</entry>
<entry><constant>SESAM_SEEK_RELATIVE</constant></entry>
<entry>
seek relative to current scroll position, where
<parameter>offset</parameter> can be a positive or negative
offset value.
</entry>
</row>
</tbody>
</tgroup>
</table>
This parameter is only valid for "scrollable" cursors.
</para>
<para>
When using "scrollable" cursors, the cursor can be freely positioned
on the result set. If the <parameter>whence</parameter> parameter is
omitted, the global default values for the scrolling type (initialized
to: <constant>SESAM_SEEK_NEXT</constant>, and settable by
<function>sesam_seek_row</function>) are used. If
<parameter>whence</parameter> is supplied, its value replaces the
global default.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>offset</parameter></term>
<listitem>
<para>
Only evaluated (and required) if <parameter>whence</parameter> is
either <constant>SESAM_SEEK_RELATIVE</constant> or
<constant>SESAM_SEEK_ABSOLUTE</constant>. This parameter is only
valid for "scrollable" cursors.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Returns an array that corresponds to the fetched row, or
&false; if there are no more rows.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>SESAM fetch array</title>
<programlisting role="php">
<![CDATA[
<?php
$result = sesam_query("SELECT * FROM phone\n" .
" WHERE LASTNAME='" . strtoupper($name) . "'\n".
" ORDER BY FIRSTNAME", 1);
if (!$result) {
/* ... error ... */
}
// print the table:
echo "<table border=\"1\">\n";
while (($row = sesam_fetch_array($result)) && count($row) > 0) {
echo "<tr>\n";
echo "<td>" . htmlspecialchars($row["firstname"]) . "</td>\n";
echo "<td>" . htmlspecialchars($row["lastname"]) . "</td>\n";
echo "<td>" . htmlspecialchars($row["phoneno"]) . "</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
sesam_free_result($result);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>sesam_fetch_row</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:"../../../../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
-->