Exemple #1
0
 /**
  * query() is a convenience function
  *
  * @param string $sql
  * @param string|array|ParameterContainer $parametersOrQueryMode
  * @throws Exception\InvalidArgumentException
  * @return Driver\StatementInterface|ResultSet\ResultSet
  */
 public function query($sql, $parametersOrQueryMode = self::QUERY_MODE_PREPARE)
 {
     if (is_string($parametersOrQueryMode) && in_array($parametersOrQueryMode, array(self::QUERY_MODE_PREPARE, self::QUERY_MODE_EXECUTE))) {
         $mode = $parametersOrQueryMode;
         $parameters = null;
     } elseif (is_array($parametersOrQueryMode) || $parametersOrQueryMode instanceof ParameterContainer) {
         $mode = self::QUERY_MODE_PREPARE;
         $parameters = $parametersOrQueryMode;
     } else {
         throw new Exception\InvalidArgumentException('Parameter 2 to this method must be a flag, an array, or ParameterContainer');
     }
     if ($mode == self::QUERY_MODE_PREPARE) {
         $this->lastPreparedStatement = null;
         $this->lastPreparedStatement = $this->driver->createStatement($sql);
         $this->lastPreparedStatement->prepare();
         if (is_array($parameters) || $parameters instanceof ParameterContainer) {
             $this->lastPreparedStatement->setParameterContainer(is_array($parameters) ? new ParameterContainer($parameters) : $parameters);
             $result = $this->lastPreparedStatement->execute();
         } else {
             return $this->lastPreparedStatement;
         }
     } else {
         $result = $this->driver->getConnection()->execute($sql);
     }
     if ($result instanceof Driver\ResultInterface && $result->isQueryResult()) {
         $resultSet = clone $this->queryResultSetPrototype;
         $resultSet->initialize($result);
         return $resultSet;
     }
     return $result;
 }
 /**
  * Undoes results of current transaction
  */
 public function rollbackTransaction()
 {
     $this->_driver->getConnection()->rollback();
 }