public function getDeviceFallBackTree($wurflID) { if ($this->use_nested_set) { return $this->getDeviceFallBackTree_NS($wurflID); } $data = array(); $this->numQueries++; $query = sprintf("CALL " . TeraWurflConfig::$TABLE_PREFIX . "_FallBackDevices(%s)", $this->SQLPrep($wurflID)); $this->dbcon->multi_query($query); $i = 0; do { if ($res = $this->dbcon->store_result()) { $row = $res->fetch_row(); $data[$i++] = unserialize($row[0]); $res->free(); } } while ($this->dbcon->more_results() && $this->dbcon->next_result()); if ($i == 0) { $tw = new TeraWurfl(); $tw->toLog("Tera-WURFL Error: database fallback procedure returned no records, verify that " . TeraWurflConfig::$TABLE_PREFIX . "_FallBackDevices exists.", LOG_ERR, __CLASS__ . '::' . __FUNCTION__); } else { if ($data[$i - 1]['id'] != WurflConstants::NO_MATCH) { $tw = new TeraWurfl(); $tw->toLog("WURFL Error: device {$data[$i - 1]['id']} falls back on an inexistent device: {$data[$i - 1]['fall_back']}", LOG_ERR, __CLASS__ . '::' . __FUNCTION__); } } return $data; }
public function multiQuery($sSQL) { $start = microtime(true); $this->connect(); // Increase the counter $this->query_counter++; $result = $this->connection->multi_query(trim($sSQL)); // FLUSH RESULTS // @TODO make these usable do { $r = $this->connection->store_result(); if ($r) { $r->free(); } if (!$this->connection->more_results()) { break; } //$this->connection->next_result(); } while ($this->connection->next_result()); $duration = microtime(true) - $start; $this->addQueryLog($sSQL, $duration); if (!$result) { //var_dump (debug_backtrace ()); //$data = debug_backtrace (); //print_r ($data); //echo $sSQL; $ex = new DbException('MySQL Error: ' . $this->connection->error); $ex->setQuery($sSQL); throw $ex; } elseif ($result instanceof MySQLi_Result) { return new Result($result); } // Insert ID will return zero if this query was not insert or update. $this->insert_id = intval($this->connection->insert_id); // Affected rows $this->affected_rows = intval($this->connection->affected_rows); if ($this->insert_id > 0) { return $this->insert_id; } if ($this->affected_rows > 0) { return $this->affected_rows; } return $result; }
protected function _multiQuery($query) { $this->connect(); $this->_driver->multi_query($query); if ($this->_driver->error) { throw new Miaox_SphinxQl_Connection_Exception('[' . $this->_driver->errno . '] ' . $this->_driver->error . ' [ ' . $query . ']'); } $result = array(); $count = 0; do { if (false !== ($resource = $this->_driver->store_result())) { $result[$count] = array(); while (!is_null($row = $resource->fetch_assoc())) { $result[$count][] = $row; } $resource->free_result(); } $count++; } while ($this->_driver->more_results() && $this->_driver->next_result()); return $result; }