+ return new XDBIterator(self::prepare(func_get_args()), MYSQL_NUM);
+ }
+
+ private static function findQuery($params, $default = array())
+ {
+ for ($i = 0 ; $i < count($default) ; ++$i) {
+ $is_query = false;
+ foreach (array('insert', 'select', 'replace', 'delete', 'update') as $kwd) {
+ if (stripos($params[0], $kwd) !== false) {
+ $is_query = true;
+ break;
+ }
+ }
+ if ($is_query) {
+ break;
+ } else {
+ $default[$i] = array_shift($params);
+ }
+ }
+ return array($default, $params);
+ }
+
+ /** Fetch all rows returned by the given query.
+ * This functions can take 2 optional arguments (cf XDBResult::fetchAllRow()).
+ * Optional arguments are given *before* the query.
+ */
+ public static function fetchAllRow()
+ {
+ list($args, $query) = self::findQuery(func_get_args(), array(false, false));
+ return self::queryv($query)->fetchAllRow($args[0], $args[1]);
+ }
+
+ /** Fetch all rows returned by the given query.
+ * This functions can take 2 optional arguments (cf XDBResult::fetchAllAssoc()).
+ * Optional arguments are given *before* the query.
+ */
+ public static function fetchAllAssoc()
+ {
+ list($args, $query) = self::findQuery(func_get_args(), array(false, false));
+ return self::queryv($query)->fetchAllAssoc($args[0], $args[1]);
+ }
+
+ public static function fetchOneCell()
+ {
+ list($args, $query) = self::findQuery(func_get_args());
+ return self::queryv($query)->fetchOneCell();
+ }
+
+ public static function fetchOneRow()
+ {
+ list($args, $query) = self::findQuery(func_get_args());
+ return self::queryv($query)->fetchOneRow();
+ }
+
+ public static function fetchOneAssoc()
+ {
+ list($args, $query) = self::findQuery(func_get_args());
+ return self::queryv($query)->fetchOneAssoc();
+ }
+
+ /** Fetch a column from the result of the given query.
+ * This functions can take 1 optional arguments (cf XDBResult::fetchColumn()).
+ * Optional arguments are given *before* the query.
+ */
+ public static function fetchColumn()
+ {
+ list($args, $query) = self::findQuery(func_get_args(), array(0));
+ return self::queryv($query)->fetchColumn();