sesam_query
    (PHP 3 CVS only)
sesam_query -- Perform a SESAM SQL query and prepare the result
Description
string 
sesam_query ( string query [, bool scrollable] )
     Returns: A SESAM "result identifier" on success, or
     FALSE on error.
    
     A "result_id" resource is used by other functions to retrieve the
     query results.
    
     sesam_query() sends a query to the currently
     active database on the server. It can execute both "immediate"
     SQL statements and "select type" queries. If an "immediate"
     statement is executed, then no cursor is allocated, and any
     subsequent sesam_fetch_row() or
     sesam_fetch_result() call will return an empty
     result (zero columns, indicating end-of-result).  For "select
     type" statements, a result descriptor and a (scrollable or
     sequential, depending on the optional boolean
     scrollable parameter) cursor will be
     allocated. If scrollable is omitted, the
     cursor will be sequential.
    
     When using "scrollable" cursors, the cursor can be freely
     positioned on the result set. For each "scrollable" query, there
     are global default values for the scrolling type (initialized to:
     SESAM_SEEK_NEXT) and the scrolling offset
     which can either be set once by
     sesam_seek_row() or each time when fetching a
     row using sesam_fetch_row().
    
     For "immediate" statements, the number of affected rows is saved
     for retrieval by the sesam_affected_rows()
     function.
    
     See also: sesam_fetch_row() and
     sesam_fetch_result().
     
| Example 1. 
       Show all rows of the "phone" table as a HTML table
       | 
<?phpif (!sesam_connect("phonedb", "demo", "otto"))
 die("cannot connect");
 $result = sesam_query("select * from phone");
 if (!$result) {
 $err = sesam_diagnostic();
 die ($err["errmsg"]);
 }
 echo "<table border>\n";
 // Add title header with column names above the result:
 if ($cols = sesam_field_array($result)) {
 echo "<tr><th colspan=" . $cols["count"] . ">Result:</th></tr>\n";
 echo "<tr>\n";
 for ($col = 0; $col < $cols["count"]; ++$col) {
 $colattr = $cols[$col];
 /* Span the table head over SESAM's "Multiple Fields": */
 if ($colattr["count"] > 1) {
 echo "<th colspan=\"" . $colattr["count"] . "\">" . $colattr["name"] .
 "(1.." . $colattr["count"] . ")</th>\n";
 $col += $colattr["count"] - 1;
 } else
 echo "<th>" . $colattr["name"] . "</th>\n";
 }
 echo "</tr>\n";
 }
 
 do {
 // Fetch the result in chunks of 100 rows max.
 $ok = sesam_fetch_result($result, 100);
 for ($row=0; $row < $ok["rows"]; ++$row) {
 echo " <tr>\n";
 for ($col = 0; $col < $ok["cols"]; ++$col) {
 if (isset($ok[$col][$row])) {
 echo "<td>" . $ok[$col][$row] . "</td>\n";
 } else {
 echo "<td>-empty-</td>\n";
 }
 }
 echo "</tr>\n";
 }
 } while ($ok["truncated"]); // while there may be more data
 
 echo "</table>\n";
 // free result id
 sesam_free_result($result);
 ?>
 | 
 |