Difference between revisions of "Query Mode"

From BaseX Documentation
Jump to navigation Jump to search
m (Text replace - "master/etc/" to "master/src/main/")
Line 8: Line 8:
 
   
 
   
 
# Create a new session instance with hostname, port, username and password.
 
# Create a new session instance with hostname, port, username and password.
# Call the <code>query()</code> function of the session with the query as argument to get your query object.
+
# Call <code>query()</code> with your XQuery expression to get a query object.
# Optionally bind variables to the query with the <code>bind()</code> function.
+
# Optionally bind variables to the query with one of the <code>bind()</code> functions.
# Iterate through the query object with the <code>more()</code> and <code>next()</code> functions. If an error occurs, an exception is thrown.
+
# {{Version|7.2:}} Optionally bind a value to the context item via <code>context()</code>.
# As an alternative, call <code>execute()</code> 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.
+
# Iterate through the query object with the <code>more()</code> and <code>next()</code> functions.
 +
# As an alternative, call <code>execute()</code> to get the whole result at a time.
 
# <code>info()</code> gives you information on query evaluation.
 
# <code>info()</code> gives you information on query evaluation.
 
# <code>options()</code> returns the query serialization parameters.
 
# <code>options()</code> returns the query serialization parameters.
# Close the query with <code>close()</code>.
+
# Don't forget to close the query with <code>close()</code>.
  
 
==PHP Example==
 
==PHP Example==

Revision as of 21:30, 16 March 2012

The query mode of the Clients allows you to bind external variables to a query and evaluate the query in an iterative manner. The query() function of the Session instance returns a new query instance.

Usage

The query execution works as follows:

  1. Create a new session instance with hostname, port, username and password.
  2. Call query() with your XQuery expression to get a query object.
  3. Optionally bind variables to the query with one of the bind() functions.
  4. Version 7.2: Optionally bind a value to the context item via context().
  5. Iterate through the query object with the more() and next() functions.
  6. As an alternative, call execute() to get the whole result at a time.
  7. info() gives you information on query evaluation.
  8. options() returns the query serialization parameters.
  9. Don't forget to close the query with close().

PHP Example

Taken from our repository:

<?php
/*
 * This example shows how queries can be executed in an iterative manner.
 * Documentation: http://basex.org/api
 *
 * (C) BaseX Team 2005-11, BSD 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");

    // print result
    print $query->execute()."\n";

    // close query instance
    $query->close();

  } catch (Exception $e) {
    // print exception
    print $e->getMessage();
  }

  // close session
  $session->close();

} catch (Exception $e) {
  // print exception
  print $e->getMessage();
}
?>