protected function cleanConnection() { while ($this->dbcon->more_results()) { $this->dbcon->next_result(); $res = $this->dbcon->use_result(); if ($res instanceof mysqli_result) { $res->free(); } } }
/** * Runs a query and returns a result object * * @param string $query * @return Application_Model_Queryresult */ public function query($query) { // If there is no query we can't really do anything if (!$query) { $this->error = 'No query was requested.'; return false; } // If there is no connection handle, get one if (!$this->_dbh) { $this->_getDbh(); } $return = false; // Check again to make sure we are good if ($this->_dbh) { // Start stacking Application_Model_Queryprofiler::setQuery($query); // Start the timer $start = microtime(true); // Handle processing of the result data setting //$rs = $this->_dbh->query($query); $result = new Application_Model_Queryresult(); if ($this->_dbh->multi_query($query)) { do { if (($rs = $this->_dbh->use_result()) !== false) { $result->setResult($rs); $rs->free(); } else { if ($this->_dbh->errno) { // there was an error $this->error .= ' ' . $this->_dbh->error; } } } while ($this->_dbh->more_results() && $this->_dbh->next_result()); } else { if (($rs = $this->_dbh->query($query)) !== false) { $result->setResult($rs); $rs->free(); } else { if ($this->_dbh->errno) { $this->error = $this->_dbh->error; } } } // Stop the time $stop = microtime(true); // Handle errors //if ($this->_dbh->error) { // $this->error = $this->_dbh->error; //} // Handle timer $totaltime = $stop - $start; Application_Model_Queryprofiler::setQueryTime($totaltime); Application_Model_Queryprofiler::setQueryError($this->error); // Set the result sets, record sets and statistics $result->setResultStats(); //$return = $rs; $return = $result; } else { $this->error = 'There is no database connector.'; } return $return; }