Difference between revisions of "Query Mode"
Jump to navigation
Jump to search
(→Usage) |
|||
| Line 1: | Line 1: | ||
| − | <p> | + | <p>The query mode of the [[Language Bindings]] allows you to bind external variables to a query |
| − | + | and evaluate the query in an iterative manner. For this, you need to call the <code>query()</code> function | |
| − | of the <code>Session</code> with your defined query. This will return a query object, | + | of the <code>Session</code> instance with your defined query. This will return a query object, |
| − | which comes with a forward-only iterator | + | which comes with a forward-only iterator. Variables can be bound to the query using the |
| − | + | <code>bind()</code> function of the query object.</p> | |
| − | of the query object.</p> | ||
==Usage== | ==Usage== | ||
Revision as of 19:13, 5 February 2011
The query mode of the Language Bindings allows you to bind external variables to a query
and evaluate the query in an iterative manner. For this, you need to call the query() function
of the Session instance with your defined query. This will return a query object,
which comes with a forward-only iterator. Variables can be bound to the query using the
bind() function of the query object.
Usage
The query execution works as follows:
- Create a new session instance with hostname, port, username and password.
- Call the
query()function of the session with the query as argument to get your query object. - Optionally bind variables to the query with the
bind()function. - Initialize query output via
init(). - Iterate through the query object with the
more()andnext()functions. If an error occurs, an exception is thrown. - As an alternative, call
execute()to get the whole result at a time. This will be faster in most cases, as the socket communication will be limited to a single call. - Optionally, call
info()to get information on the number of results, query time, etc. - Close the query with
close().
Example in PHP
<?php
/*
* This example shows how queries can be executed in an iterative manner.
* Documentation: http://basex.org/api
*
* (C) BaseX Team 2005-11, ISC License
*/
include("BaseXClient.php");
try {
// create session
$session = new Session("localhost", 1984, "admin", "admin");
try {
// create query instance
$input = 'declare variable $name external; '.
'for $i in 1 to 10 return element { $name } { $i }';
$query = $session->query($input);
// bind variable
$query->bind("$name", "number");
// initialize query
print $query->init();
// loop through all results
while($query->more()) {
print $query->next()."\n";
}
// close query instance
print $query->close();
} catch (Exception $e) {
// print exception
print $e->getMessage();
}
// close session
$session->close();
} catch (Exception $e) {
// print exception
print $e->getMessage();
}
?>
for more examples see the languages section.