/** * Perform a mysql query. * * @see mysqli::query() * * @param string $query * @param mixed $resultmode null|string * @return mixed bool|object */ public function query($query, $resultmode = null) { $t = microtime(true); $error = false; if (!($result = parent::query($query, $resultmode))) { $error = ['errno' => $this->errno, 'error' => $this->error]; } $t = microtime(true) - $t; $this->queryCache[] = ['query' => $query, 'time' => $t, 'rows' => $this->affected_rows, 'error' => $error]; if (!$result) { $e = new Exception('MySQL query error: (' . $this->errno . ') ' . $this->error, $this->errno); $e->set('error', $this->error); $e->set('query', $query); $e->set('time', $t); $e->set('rows', $this->affected_rows); throw $e; } $mysqliresult = is_bool($result) ? $result : new Mysqliresult($result); return $mysqliresult; }