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] )
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).
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.
Parameters
query
The query statement.
scrollable
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.
Return Values
Returns a SESAM "result identifier" on success, or FALSE on error. This
result id is used by the other functions.
Examples
Example 1.
Show all rows of the "phone" table as a HTML table
<?php if (!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); ?>
|
|