body, etc. here. * } * @endcode * Curly braces are used around "node" to provide table prefixing via * db_prefix_tables(). The explicit use of a user ID is pulled out into an * argument passed to db_query() so that SQL injection attacks from user input * can be caught and nullified. The LIMIT syntax varies between database servers, * so that is abstracted into db_query_range() arguments. Finally, note the * common pattern of iterating over the result set using db_fetch_object(). */ /** * Append a database prefix to all tables in a query. * * Queries sent to Drupal should wrap all table names in curly brackets. This * function searches for this syntax and adds Drupal's table prefix to all * tables, allowing Drupal to coexist with other systems in the same database if * necessary. * * @param $sql * A string containing a partial or entire SQL query. * @return * The properly-prefixed string. */ function db_prefix_tables($sql) { global $db_prefix; if (is_array($db_prefix)) { $prefix = $db_prefix['default']; foreach ($db_prefix as $key => $val) { if ($key !== 'default') { $sql = strtr($sql, array('{'. $key. '}' => $val. $key)); } } } else { $prefix = $db_prefix; } return strtr($sql, array('{' => $prefix, '}' => '')); } /** * Activate a database for future queries. * * If it is necessary to use external databases in a project, this function can * be used to change where database queries are sent. If the database has not * yet been used, it is initialized using the URL specified for that name in * Drupal's configuration file. If this name is not defined, a duplicate of the * default connection is made instead. * * Be sure to change the connection back to the default when done with custom * code. * * @param $name * The name assigned to the newly active database connection. If omitted, the * default connection will be made active. */ function db_set_active($name = 'default') { global $db_url, $db_type, $active_db; static $db_conns; if (!isset($db_conns[$name])) { // Initiate a new connection, using the named DB URL specified. if (is_array($db_url)) { $connect_url = array_key_exists($name, $db_url) ? $db_url[$name] : $db_url['default']; } else { $connect_url = $db_url; } $db_type = substr($connect_url, 0, strpos($connect_url, '://')); // TODO: Allow more than one database API to be present. if ($db_type == 'mysql') { include_once 'includes/database.mysql.inc'; } else { include_once 'includes/database.pear.inc'; } $db_conns[$name] = db_connect($connect_url); } // Set the active connection. $active_db = $db_conns[$name]; } /** * @} end of defgroup database */ // Initialize the default database. db_set_active(); ?>