/** * Executes statement. * @param array * @return NStatement provides a fluent interface */ public function execute($params = array()) { static $types = array('boolean' => PDO::PARAM_BOOL, 'integer' => PDO::PARAM_INT, 'resource' => PDO::PARAM_LOB, 'NULL' => PDO::PARAM_NULL); foreach ($params as $key => $value) { $type = gettype($value); $this->bindValue(is_int($key) ? $key + 1 : $key, $value, isset($types[$type]) ? $types[$type] : PDO::PARAM_STR); } $time = microtime(TRUE); try { parent::execute(); } catch (PDOException $e) { $e->queryString = $this->queryString; throw $e; } $this->time = microtime(TRUE) - $time; $this->connection->__call('onQuery', array($this, $params)); // $this->connection->onQuery() in PHP 5.3 return $this; }