protected function cleanConnection()
 {
     while ($this->dbcon->more_results()) {
         $this->dbcon->next_result();
         $res = $this->dbcon->use_result();
         if ($res instanceof mysqli_result) {
             $res->free();
         }
     }
 }
Esempio n. 2
0
 /**
  * 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;
 }