dbs             Wed Apr 13 14:49:30 2005 EDT

  Modified files:              
    /phpdoc/en/reference/ibm_db2        configure.xml 
    /phpdoc/en/reference/ibm_db2/functions      db2-conn-error.xml 
                                                db2-conn-errormsg.xml 
                                                db2-exec.xml db2-execute.xml 
                                                db2-prepare.xml 
  Log:
  More ibm_db2 function documentation goodness.
  
  
http://cvs.php.net/diff.php/phpdoc/en/reference/ibm_db2/configure.xml?r1=1.1&r2=1.2&ty=u
Index: phpdoc/en/reference/ibm_db2/configure.xml
diff -u phpdoc/en/reference/ibm_db2/configure.xml:1.1 
phpdoc/en/reference/ibm_db2/configure.xml:1.2
--- phpdoc/en/reference/ibm_db2/configure.xml:1.1       Tue Apr 12 19:45:14 2005
+++ phpdoc/en/reference/ibm_db2/configure.xml   Wed Apr 13 14:49:24 2005
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.1 $ -->
+<!-- $Revision: 1.2 $ -->
 <section id="ibm_db2.installation">
  &reftitle.install;
  <para>
@@ -17,11 +17,11 @@
  <para>
   ibm_db2 is a  <ulink url="&url.pecl;">PECL</ulink> extension, so follow the
   instructions in <xref linkend='install.pecl' /> to install the ibm_db2
-  extension for PHP. Issue the <command>configure</command> to point
+  extension for PHP. Issue the <command>configure</command> command to point
   to the location of your DB2 header files and libraries as follows:
   <screen>
 <![CDATA[
-bash$ ./configure --with-IBM_DB2
+bash$ ./configure --with-IBM_DB2=/path/to/DB2
 ]]>
   </screen>
   The <command>configure</command> command defaults to
http://cvs.php.net/diff.php/phpdoc/en/reference/ibm_db2/functions/db2-conn-error.xml?r1=1.1&r2=1.2&ty=u
Index: phpdoc/en/reference/ibm_db2/functions/db2-conn-error.xml
diff -u phpdoc/en/reference/ibm_db2/functions/db2-conn-error.xml:1.1 
phpdoc/en/reference/ibm_db2/functions/db2-conn-error.xml:1.2
--- phpdoc/en/reference/ibm_db2/functions/db2-conn-error.xml:1.1        Tue Apr 
12 17:12:48 2005
+++ phpdoc/en/reference/ibm_db2/functions/db2-conn-error.xml    Wed Apr 13 
14:49:29 2005
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.1 $ -->
+<!-- $Revision: 1.2 $ -->
 <!-- Generated by xml_proto.php v2.2. Found in /scripts directory of phpdoc. 
-->
 <refentry id="function.db2-conn-error">
  <refnamediv>
@@ -15,8 +15,27 @@
    <methodparam 
choice="opt"><type>resource</type><parameter>connection</parameter></methodparam>
   </methodsynopsis>
 
-  &warn.undocumented.func;
+  &warn.experimental.func;
 
+  <para>
+   <function>db2_conn_error</function> returns an SQLSTATE value representing
+   the reason the last attempt to connect to a database failed. As
+   <function>db2_connect</function> returns &false; in the event of a failed
+   connection attempt, you do not pass any parameters to
+   <function>db2_conn_error</function> to retrieve the SQLSTATE value.
+  </para>
+  <para>
+   If, however, the connection was successful but becomes invalid over time,
+   you can pass the <parameter>connection</parameter> parameter to retrieve
+   the SQLSTATE value for a specific connection.
+  </para>
+  <para>
+   To learn what the SQLSTATE value means, you can issue the following command
+   at a DB2 Command Line Processor prompt:
+   <userinput>db2 '? <parameter>sqlstate-value</parameter>'</userinput>. You
+   can also call <function>db2_conn_errormsg</function> to retrieve an
+   explicit error message and the associated SQLCODE value.
+  </para>
  </refsect1>
  <refsect1 role="parameters">
   &reftitle.parameters;
@@ -24,74 +43,41 @@
    <variablelist>
     <varlistentry>
      <term><parameter>connection</parameter></term>
-      <listitem>
-       <para>
-        Its description
-       </para>
-      </listitem>
-     </varlistentry>
+     <listitem>
+      <para>
+       A connection resource associated with a connection that initially
+       succeeded, but which over time became invalid.
+      </para>
+     </listitem>
+    </varlistentry>
    </variablelist>
   </para>
  </refsect1>
  <refsect1 role="returnvalues">
   &reftitle.returnvalues;
   <para>
-   What the function returns, first on success, then on failure. See
-   also the &return.success; entity
-  </para>
- </refsect1>
-
- <!-- Use when EXCEPTIONS exist
- <refsect1 role="exceptions">
-  &reftitle.exceptions;
-  <para>
-   When does this function throw exceptions?
-  </para>
- </refsect1>
- -->
-
-
- <!-- Use when a CHANGELOG exists
- <refsect1 role="changelog">
-  &reftitle.changelog;
-  <para>
-   <informaltable>
-    <tgroup cols="2">
-     <thead>
-      <row>
-       <entry>&Version;</entry>
-       <entry>&Description</entry>
-      </row>
-     </thead>
-     <tbody>
-      <row>
-       <entry>Enter the PHP version of change here
-       <entry>Description of change
-      </row>
-     </tbody>
-    </tgroup>
-   </informaltable>
+   Returns the SQLSTATE value resulting from a failed connection attempt.
+   Returns an empty string if there is no error associated with the last
+   connection attempt.
   </para>
  </refsect1>
- -->
 
-
- <!-- Use when examples exist
  <refsect1 role="examples">
   &reftitle.examples;
   <para>
    <example>
-    <title>A <function>db2_conn_error</function> example</title>
+    <title>Retrieving an SQLSTATE value for a failed connection attempt</title>
     <para>
-     Any text that describes the purpose of the example, or
-     what goes on in the example should go here (inside the
-     <example> tag, not out
+     The following example demonstrates how to return an SQLSTATE value 
+     after deliberately passing invalid parameters to
+     <function>db2_connect</function>.
     </para>
     <programlisting role="php">
 <![CDATA[
 <?php
-if ($anexample === true) {
-    echo 'Use the PEAR Coding Standards';
+$conn = db2_connect('badname', 'baduser', 'badpassword');
+if (!$conn) {
+    print "SQLSTATE value: " . db2_conn_error();
 }
 ?>
 ]]>
@@ -99,26 +85,24 @@
     &example.outputs;
     <screen>
 <![CDATA[
-Use the PEAR Coding Standards
+SQLSTATE value: 08001
 ]]>
     </screen>
    </example>
   </para>
  </refsect1>
- -->
-
 
- <!-- Use when adding See Also links
  <refsect1 role="seealso">
   &reftitle.seealso;
   <para>
    <simplelist>
-    <member><function></function></member>
-    <member>Or <link linkend="somethingelse">something else</link></member>
+    <member><function>db2_conn_errormsg</function></member>
+    <member><function>db2_connect</function></member>
+    <member><function>db2_stmt_error</function></member>
+    <member><function>db2_stmt_errormsg</function></member>
    </simplelist>
   </para>
  </refsect1>
- -->
 
 
 </refentry>
http://cvs.php.net/diff.php/phpdoc/en/reference/ibm_db2/functions/db2-conn-errormsg.xml?r1=1.1&r2=1.2&ty=u
Index: phpdoc/en/reference/ibm_db2/functions/db2-conn-errormsg.xml
diff -u phpdoc/en/reference/ibm_db2/functions/db2-conn-errormsg.xml:1.1 
phpdoc/en/reference/ibm_db2/functions/db2-conn-errormsg.xml:1.2
--- phpdoc/en/reference/ibm_db2/functions/db2-conn-errormsg.xml:1.1     Tue Apr 
12 17:12:48 2005
+++ phpdoc/en/reference/ibm_db2/functions/db2-conn-errormsg.xml Wed Apr 13 
14:49:30 2005
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.1 $ -->
+<!-- $Revision: 1.2 $ -->
 <!-- Generated by xml_proto.php v2.2. Found in /scripts directory of phpdoc. 
-->
 <refentry id="function.db2-conn-errormsg">
  <refnamediv>
   <refname>db2_conn_errormsg</refname>
   <refpurpose>
-   Returns a string containing the last connection error message
+   Returns the last connection error message and SQLCODE value
   </refpurpose>
  </refnamediv>
  <refsect1 role="description">
@@ -15,8 +15,20 @@
    <methodparam 
choice="opt"><type>resource</type><parameter>connection</parameter></methodparam>
   </methodsynopsis>
 
-  &warn.undocumented.func;
-
+  &warn.experimental.func;
+  <para>
+   <function>db2_conn_errormsg</function> returns an error message and SQLCODE
+   value representing the reason the last database connection attempt failed.
+   As <function>db2_connect</function> returns &false; in the event of a failed
+   connection attempt, do not pass any parameters to
+   <function>db2_conn_errormsg</function> to retrieve the associated error
+   message and SQLCODE value.
+  </para>
+  <para>
+   If, however, the connection was successful but becomes invalid over time,
+   you can pass the <parameter>connection</parameter> parameter to retrieve
+   the associated error message and SQLCODE value for a specific connection.
+  </para>
  </refsect1>
  <refsect1 role="parameters">
   &reftitle.parameters;
@@ -26,7 +38,8 @@
      <term><parameter>connection</parameter></term>
       <listitem>
        <para>
-        Its description
+        A connection resource associated with a connection that initially
+        succeeded, but which over time became invalid.
        </para>
       </listitem>
      </varlistentry>
@@ -36,62 +49,29 @@
  <refsect1 role="returnvalues">
   &reftitle.returnvalues;
   <para>
-   What the function returns, first on success, then on failure. See
-   also the &return.success; entity
-  </para>
- </refsect1>
-
- <!-- Use when EXCEPTIONS exist
- <refsect1 role="exceptions">
-  &reftitle.exceptions;
-  <para>
-   When does this function throw exceptions?
-  </para>
- </refsect1>
- -->
-
-
- <!-- Use when a CHANGELOG exists
- <refsect1 role="changelog">
-  &reftitle.changelog;
-  <para>
-   <informaltable>
-    <tgroup cols="2">
-     <thead>
-      <row>
-       <entry>&Version;</entry>
-       <entry>&Description</entry>
-      </row>
-     </thead>
-     <tbody>
-      <row>
-       <entry>Enter the PHP version of change here
-       <entry>Description of change
-      </row>
-     </tbody>
-    </tgroup>
-   </informaltable>
+   Returns a string containing the error message and SQLCODE value resulting
+   from a failed connection attempt. If there is no error associated with the 
last
+   connection attempt, <function>db2_conn_errormsg</function> returns an empty
+   string.
   </para>
  </refsect1>
- -->
-
 
- <!-- Use when examples exist
  <refsect1 role="examples">
   &reftitle.examples;
   <para>
    <example>
-    <title>A <function>db2_conn_errormsg</function> example</title>
+    <title>Retrieving the error message returned by a failed connection 
attempt</title>
     <para>
-     Any text that describes the purpose of the example, or
-     what goes on in the example should go here (inside the
-     <example> tag, not out
+     The following example demonstrates how to return an error message and
+     SQLCODE value after deliberately passing invalid parameters to
+     <function>db2_connect</function>.
     </para>
     <programlisting role="php">
 <![CDATA[
 <?php
-if ($anexample === true) {
-    echo 'Use the PEAR Coding Standards';
+$conn = db2_connect('badname', 'baduser', 'badpassword');
+if (!$conn) {
+    print db2_conn_errormsg();
 }
 ?>
 ]]>
@@ -99,27 +79,26 @@
     &example.outputs;
     <screen>
 <![CDATA[
-Use the PEAR Coding Standards
+Msg:[IBM][CLI Driver] SQL1013N  The database alias name
+or database name "BADNAME" could not be found.  SQLSTATE=42705
+ Err Code: -1013
 ]]>
     </screen>
    </example>
   </para>
  </refsect1>
- -->
 
-
- <!-- Use when adding See Also links
  <refsect1 role="seealso">
   &reftitle.seealso;
   <para>
    <simplelist>
-    <member><function></function></member>
-    <member>Or <link linkend="somethingelse">something else</link></member>
+    <member><function>db2_conn_error</function></member>
+    <member><function>db2_connect</function></member>
+    <member><function>db2_stmt_error</function></member>
+    <member><function>db2_stmt_errormsg</function></member>
    </simplelist>
   </para>
  </refsect1>
- -->
-
 
 </refentry>
 
http://cvs.php.net/diff.php/phpdoc/en/reference/ibm_db2/functions/db2-exec.xml?r1=1.2&r2=1.3&ty=u
Index: phpdoc/en/reference/ibm_db2/functions/db2-exec.xml
diff -u phpdoc/en/reference/ibm_db2/functions/db2-exec.xml:1.2 
phpdoc/en/reference/ibm_db2/functions/db2-exec.xml:1.3
--- phpdoc/en/reference/ibm_db2/functions/db2-exec.xml:1.2      Tue Apr 12 
20:37:15 2005
+++ phpdoc/en/reference/ibm_db2/functions/db2-exec.xml  Wed Apr 13 14:49:30 2005
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.2 $ -->
+<!-- $Revision: 1.3 $ -->
 <!-- Generated by xml_proto.php v2.2. Found in /scripts directory of phpdoc. 
-->
 <refentry id="function.db2-exec">
  <refnamediv>
@@ -54,7 +54,7 @@
      <term><parameter>statement</parameter></term>
      <listitem>
       <para>
-       An SQL statement.
+       An SQL statement. The statement cannot contain any parameter markers.
       </para>
      </listitem>
     </varlistentry>
http://cvs.php.net/diff.php/phpdoc/en/reference/ibm_db2/functions/db2-execute.xml?r1=1.1&r2=1.2&ty=u
Index: phpdoc/en/reference/ibm_db2/functions/db2-execute.xml
diff -u phpdoc/en/reference/ibm_db2/functions/db2-execute.xml:1.1 
phpdoc/en/reference/ibm_db2/functions/db2-execute.xml:1.2
--- phpdoc/en/reference/ibm_db2/functions/db2-execute.xml:1.1   Tue Apr 12 
17:12:48 2005
+++ phpdoc/en/reference/ibm_db2/functions/db2-execute.xml       Wed Apr 13 
14:49:30 2005
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.1 $ -->
+<!-- $Revision: 1.2 $ -->
 <!-- Generated by xml_proto.php v2.2. Found in /scripts directory of phpdoc. 
-->
 <refentry id="function.db2-execute">
  <refnamediv>
@@ -13,10 +13,31 @@
   <methodsynopsis>
    <type>bool</type><methodname>db2_execute</methodname>
    <methodparam><type>resource</type><parameter>stmt</parameter></methodparam>
-   <methodparam 
choice="opt"><type>array</type><parameter>parameters_array</parameter></methodparam>
+   <methodparam 
choice="opt"><type>array</type><parameter>parameters</parameter></methodparam>
   </methodsynopsis>
 
-  &warn.undocumented.func;
+  &warn.experimental.func;
+
+  <para>
+   <function>db2_execute</function> executes an SQL statement that was
+   prepared by <function>db2_prepare</function>.
+  </para>
+  <para>
+   If the SQL statement returns a result set, for example, a SELECT statement
+   or a CALL to a stored procedure that returns one or more result sets, you
+   can retrieve a row as an array from the <literal>stmt</literal> resource
+   using <function>db2_fetch_assoc</function>,
+   <function>db2_fetch_both</function>, or
+   <function>db2_fetch_into</function>. Alternatively, you can use
+   <function>db2_fetch_row</function> to move the result set pointer to the
+   next row and fetch a column at a time from that row with
+   <function>db2_result</function>.
+  </para>
+  <para>
+   Refer to <function>db2_prepare</function> for a brief discussion of the
+   advantages of using <function>db2_prepare</function> and
+   <function>db2_execute</function> rather than <function>db2_exec</function>.
+  </para>
 
  </refsect1>
  <refsect1 role="parameters">
@@ -27,15 +48,16 @@
      <term><parameter>stmt</parameter></term>
       <listitem>
        <para>
-        Its description
+        A prepared statement returned from <function>db2_prepare</function>.
        </para>
       </listitem>
      </varlistentry>
     <varlistentry>
-     <term><parameter>parameters_array</parameter></term>
+     <term><parameter>parameters</parameter></term>
       <listitem>
        <para>
-        Its description
+        An array of input parameters matching any parameter markers contained
+        in the prepared statement.
        </para>
       </listitem>
      </varlistentry>
@@ -45,62 +67,34 @@
  <refsect1 role="returnvalues">
   &reftitle.returnvalues;
   <para>
-   What the function returns, first on success, then on failure. See
-   also the &return.success; entity
-  </para>
- </refsect1>
-
- <!-- Use when EXCEPTIONS exist
- <refsect1 role="exceptions">
-  &reftitle.exceptions;
-  <para>
-   When does this function throw exceptions?
+   &return.success;
   </para>
  </refsect1>
- -->
-
 
- <!-- Use when a CHANGELOG exists
- <refsect1 role="changelog">
-  &reftitle.changelog;
-  <para>
-   <informaltable>
-    <tgroup cols="2">
-     <thead>
-      <row>
-       <entry>&Version;</entry>
-       <entry>&Description</entry>
-      </row>
-     </thead>
-     <tbody>
-      <row>
-       <entry>Enter the PHP version of change here
-       <entry>Description of change
-      </row>
-     </tbody>
-    </tgroup>
-   </informaltable>
-  </para>
- </refsect1>
- -->
-
-
- <!-- Use when examples exist
  <refsect1 role="examples">
   &reftitle.examples;
   <para>
    <example>
-    <title>A <function>db2_execute</function> example</title>
+    <title>Preparing and executing an SQL statement with parameter 
markers</title>
     <para>
-     Any text that describes the purpose of the example, or
-     what goes on in the example should go here (inside the
-     <example> tag, not out
+     The following example prepares an INSERT statement that accepts four
+     parameter markers, then iterates over an array of arrays containg the
+     input values to be passed to <function>db2_execute</function>.
     </para>
     <programlisting role="php">
 <![CDATA[
 <?php
-if ($anexample === true) {
-    echo 'Use the PEAR Coding Standards';
+$pet = array(0, 'cat', 'Pook', 3.2);
+
+$insert = 'INSERT INTO animals (id, breed, name, weight)
+    VALUES (?, ?, ?, ?)';
+
+$stmt = db2_prepare($conn, $insert);
+if ($stmt) {
+    $result = db2_execute($stmt, $pet);
+    if ($result) {
+        print "Successfully added new pet.";
+    }
 }
 ?>
 ]]>
@@ -108,26 +102,59 @@
     &example.outputs;
     <screen>
 <![CDATA[
-Use the PEAR Coding Standards
+Successfully added new pet.
 ]]>
     </screen>
    </example>
+   <example>
+    <title>Calling a stored procedure with an OUT parameter</title>
+    <para>
+     The following example prepares a CALL statement that accepts one 
+     parameter marker representing an OUT parameter, binds the PHP variable
+     <literal>$my_pets</literal> to the parameter using
+     <function>db2_bind_param</function>, then issues
+     <function>db2_execute</function> to execute the CALL statement. After the
+     CALL to the stored procedure has been made, the value of
+     <literal>$num_pets</literal> changes to reflect the value returned by the
+     stored procedure for that OUT parameter.
+    </para>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$num_pets = 0;
+$res = db2_prepare($conn, "CALL count_my_pets(?)");
+$rc = db2_bind_param($res, 1, "num_pets", DB2_PARAM_OUT);
+$rc = db2_execute($res);
+print "I have $num_pets pets!";
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen>
+<![CDATA[
+I have 7 pets!
+]]>
+    </screen>
+   </example>
+
+
   </para>
  </refsect1>
- -->
-
 
- <!-- Use when adding See Also links
  <refsect1 role="seealso">
   &reftitle.seealso;
   <para>
    <simplelist>
-    <member><function></function></member>
-    <member>Or <link linkend="somethingelse">something else</link></member>
+    <member><function>db2_exec</function></member>
+    <member><function>db2_fetch_assoc</function></member>
+    <member><function>db2_fetch_both</function></member>
+    <member><function>db2_fetch_into</function></member>
+    <member><function>db2_fetch_row</function></member>
+    <member><function>db2_prepare</function></member>
+    <member><function>db2_result</function></member>
    </simplelist>
   </para>
  </refsect1>
- -->
 
 
 </refentry>
http://cvs.php.net/diff.php/phpdoc/en/reference/ibm_db2/functions/db2-prepare.xml?r1=1.1&r2=1.2&ty=u
Index: phpdoc/en/reference/ibm_db2/functions/db2-prepare.xml
diff -u phpdoc/en/reference/ibm_db2/functions/db2-prepare.xml:1.1 
phpdoc/en/reference/ibm_db2/functions/db2-prepare.xml:1.2
--- phpdoc/en/reference/ibm_db2/functions/db2-prepare.xml:1.1   Tue Apr 12 
17:12:48 2005
+++ phpdoc/en/reference/ibm_db2/functions/db2-prepare.xml       Wed Apr 13 
14:49:30 2005
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.1 $ -->
+<!-- $Revision: 1.2 $ -->
 <!-- Generated by xml_proto.php v2.2. Found in /scripts directory of phpdoc. 
-->
 <refentry id="function.db2-prepare">
  <refnamediv>
   <refname>db2_prepare</refname>
   <refpurpose>
-   Prepares an SQL statement
+   Prepares an SQL statement to be executed
   </refpurpose>
  </refnamediv>
  <refsect1 role="description">
@@ -13,11 +13,53 @@
   <methodsynopsis>
    <type>resource</type><methodname>db2_prepare</methodname>
    
<methodparam><type>resource</type><parameter>connection</parameter></methodparam>
-   
<methodparam><type>string</type><parameter>stmt_string</parameter></methodparam>
+   
<methodparam><type>string</type><parameter>statement</parameter></methodparam>
    <methodparam 
choice="opt"><type>array</type><parameter>options</parameter></methodparam>
   </methodsynopsis>
 
-  &warn.undocumented.func;
+  &warn.experimental.func;
+
+  <para>
+   <function>db2_prepare</function> creates a prepared SQL statement which can
+   include 0 or more parameter markers (<literal>?</literal> characters)
+   representing parameters for input, output, or input/output. You can pass
+   parameters to the prepared statement using
+   <function>db2_bind_param</function>, or for input values only, as an array
+   passed to <function>db2_execute</function>.
+  </para>
+  <para>
+   There are three main advantages to using prepared statements in your
+   application:
+   <itemizedlist>
+    <listitem>
+     <para>
+      <emphasis>Performance</emphasis>: when you prepare a statement, the
+      database server creates an optimized access plan for retrieving data with
+      that statement. Subsequently issuing the prepared statement with
+      <function>db2_execute</function> enables the statements to reuse that
+      access plan and avoids the overhead of dynamically creating a new access
+      plan for every statement you issue.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <emphasis>Security</emphasis>: when you prepare a statement, you can
+      include parameter markers for input values. When you execute a prepared
+      statement with input values for placeholders, the database server checks
+      each input value to ensure that the type matches the column definition or
+      parameter definition.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <emphasis>Advanced functionality</emphasis>: Parameter markers not only
+      enable you to pass input values to prepared SQL statements, they also
+      enable you to retrieve OUT and INOUT parameters from stored procedures
+      using <function>db2_bind_param</function>.
+     </para>
+    </listitem>
+   </itemizedlist>
+  </para>
 
  </refsect1>
  <refsect1 role="parameters">
@@ -26,118 +68,148 @@
    <variablelist>
     <varlistentry>
      <term><parameter>connection</parameter></term>
-      <listitem>
-       <para>
-        Its description
-       </para>
-      </listitem>
-     </varlistentry>
+     <listitem>
+      <para>
+       A valid database connection resource variable as returned from
+       <function>db2_connect</function> or <function>db2_pconnect</function>.
+      </para>
+     </listitem>
+    </varlistentry>
     <varlistentry>
-     <term><parameter>stmt_string</parameter></term>
-      <listitem>
-       <para>
-        Its description
-       </para>
-      </listitem>
-     </varlistentry>
+     <term><parameter>statement</parameter></term>
+     <listitem>
+      <para>
+       An SQL statement, optionally containing one or more parameter markers..
+      </para>
+     </listitem>
+    </varlistentry>
     <varlistentry>
      <term><parameter>options</parameter></term>
-      <listitem>
-       <para>
-        Its description
-       </para>
-      </listitem>
-     </varlistentry>
+     <listitem>
+      <para>
+       An associative array containing statement options. You can use this
+       parameter to request a scrollable cursor on database servers that
+       support this functionality.
+       <variablelist>
+        <varlistentry>
+         <term><parameter>cursor</parameter></term>
+         <listitem>
+          <para>
+           Passing the <literal>DB2_FORWARD_ONLY</literal> value requests a
+           forward-only cursor for this SQL statement. This is the default
+           type of cursor, and it is supported by all database servers. It is
+           also much faster than a scrollable cursor.
+          </para>
+          <para>
+           Passing the <literal>DB2_SCROLLABLE</literal> value requests a
+           scrollable cursor for this SQL statement. This type of cursor
+           enables you to fetch rows non-sequentially from the database
+           server. However, it is only supported by DB2 servers, and is much
+           slower than forward-only cursors.
+          </para>
+         </listitem>
+        </varlistentry>
+       </variablelist>
+      </para>
+     </listitem>
+    </varlistentry>
    </variablelist>
   </para>
  </refsect1>
  <refsect1 role="returnvalues">
   &reftitle.returnvalues;
   <para>
-   What the function returns, first on success, then on failure. See
-   also the &return.success; entity
-  </para>
- </refsect1>
-
- <!-- Use when EXCEPTIONS exist
- <refsect1 role="exceptions">
-  &reftitle.exceptions;
-  <para>
-   When does this function throw exceptions?
-  </para>
- </refsect1>
- -->
-
-
- <!-- Use when a CHANGELOG exists
- <refsect1 role="changelog">
-  &reftitle.changelog;
-  <para>
-   <informaltable>
-    <tgroup cols="2">
-     <thead>
-      <row>
-       <entry>&Version;</entry>
-       <entry>&Description</entry>
-      </row>
-     </thead>
-     <tbody>
-      <row>
-       <entry>Enter the PHP version of change here
-       <entry>Description of change
-      </row>
-     </tbody>
-    </tgroup>
-   </informaltable>
+   Returns a statement resource if the SQL statement was successfully parsed 
and
+   prepared by the database server. Returns &false; if the database server
+   returned an error. You can determine which error was returned by calling
+   <function>db2_stmt_error</function> or 
<function>db2_stmt_errormsg</function>.
   </para>
  </refsect1>
- -->
 
-
- <!-- Use when examples exist
  <refsect1 role="examples">
   &reftitle.examples;
   <para>
    <example>
-    <title>A <function>db2_prepare</function> example</title>
+    <title>Preparing and executing an SQL statement with parameter 
markers</title>
     <para>
-     Any text that describes the purpose of the example, or
-     what goes on in the example should go here (inside the
-     <example> tag, not out
+     The following example prepares an INSERT statement that accepts four
+     parameter markers, then iterates over an array of arrays containg the
+     input values to be passed to <function>db2_execute</function>.
     </para>
     <programlisting role="php">
 <![CDATA[
 <?php
-if ($anexample === true) {
-    echo 'Use the PEAR Coding Standards';
+$animals = array(
+    array(0, 'cat', 'Pook', 3.2),
+    array(1, 'dog', 'Peaches', 12.3),
+    array(2, 'horse', 'Smarty', 350.0),
+);
+
+$insert = 'INSERT INTO animals (id, breed, name, weight)
+    VALUES (?, ?, ?, ?)';
+$stmt = db2_prepare($conn, $insert);
+if ($stmt) {
+    foreach ($animals as $animal) {
+        $result = db2_execute($stmt, $animal);
+    }
 }
 ?>
 ]]>
     </programlisting>
+   </example>
+   <!--
+   <example>
+    <title>Preventing SQL injection attacks using parameter markers</title>
+     <para>
+      Parameter markers make it impossible for a malicious user of your
+      application to pass input values that map to more than one database
+      field or stored procedure parameter. The following example demonstrates
+      a common tactic for attacking database-driven Web applications, SQL
+      injection, which takes advantage of applications that often simply
+      interpolate the input values from a user directly into an SQL statement
+      rather than defining parameter markers and binding the input values to
+      those parameter markers.
+     </para>
+     <para>
+      In the following example, assume that the PHP script has been placed on
+      a publically accessible Web server and the application provides
+      different levels of access for different users. We shall also assume
+      that the application issues an SQL statement that updates the privilege
+      level of a newly registered user to the lowest level, taking the user ID
+      from a GET input variable. In the following example, a malicious user
+      can pass <userinput>userid=0+OR+1=1</userinput> (instead of the expected
+      <userinput>userid=0</userinput>) to trick your application into
+      setting the privilege level of every user in the database to the lowest
+      level.
+     </para>
+    <programlisting role="php">
+<![CDATA[
+<?php
+ 
+?>
+]]>
+    </programlisting>
     &example.outputs;
     <screen>
 <![CDATA[
-Use the PEAR Coding Standards
 ]]>
     </screen>
    </example>
+   -->
   </para>
  </refsect1>
- -->
 
-
- <!-- Use when adding See Also links
  <refsect1 role="seealso">
   &reftitle.seealso;
   <para>
    <simplelist>
-    <member><function></function></member>
-    <member>Or <link linkend="somethingelse">something else</link></member>
+    <member><function>db2_bind_param</function></member>
+    <member><function>db2_execute</function></member>
+    <member><function>db2_stmt_error</function></member>
+    <member><function>db2_stmt_errormsg</function></member>
    </simplelist>
   </para>
  </refsect1>
- -->
-
 
 </refentry>
 

Reply via email to