Exemple #1
0
 /**
  * Execute
  *
  * @param  string                          $sql
  * @throws Exception\InvalidQueryException
  * @return Result
  */
 public function execute($sql)
 {
     if (!$this->isConnected()) {
         $this->connect();
     }
     try {
         if ($this->profiler) {
             $this->profiler->profilerStart($sql);
         }
         $resultResource = $this->db->execute($sql);
         if ($this->profiler) {
             $this->profiler->profilerFinish($sql);
         }
         // if the returnValue is something other than a mysqli_result, bypass wrapping it
         if (!$resultResource['ok']) {
             throw new Exception\InvalidQueryException($resultResource['errmsg']);
         }
     } catch (\Exception $e) {
         throw new Exception\InvalidQueryException($ex->getMessage(), $ex->getCode());
     }
     $resultPrototype = $this->driver->createResult($resultResource === true ? $this->resource : $resultResource);
     return $resultResource['retval'];
 }
Exemple #2
0
 /**
  * Execute
  *
  * @param  ParameterContainer|array   $parameters
  * @throws Exception\RuntimeException
  * @return mixed
  */
 public function execute($parameters = null)
 {
     if (!$this->isPrepared) {
         $this->prepare();
     }
     /** START Standard ParameterContainer Merging Block */
     if (!$this->parameterContainer instanceof ParameterContainer) {
         if ($parameters instanceof ParameterContainer) {
             $this->parameterContainer = $parameters;
             $parameters = null;
         } else {
             $this->parameterContainer = new ParameterContainer();
         }
     }
     if (is_array($parameters)) {
         $this->parameterContainer->setFromArray($parameters);
     }
     if ($this->parameterContainer->count() > 0) {
         $this->bindParametersFromContainer();
     }
     /** END Standard ParameterContainer Merging Block */
     if ($this->profiler) {
         $this->profiler->profilerStart($this);
     }
     if ($this->bufferResults === true) {
         //            $this -> resource -> store_result();
         //            $this -> isPrepared = false;
         $buffered = true;
     } else {
         $buffered = false;
     }
     if ($this->sql instanceof \MongoZend\Db\NoSql\Select) {
         $_order = $this->sql->getOrder();
         //            , $this -> sql->getColumns()
         $return = $this->resource->find($this->sql->getWhere());
         if (!empty($_order)) {
             foreach ($_order as $_k => $_v) {
                 if (strtolower($_v) == 'desc' || $_v < 0) {
                     $_order[$_k] = -1;
                 } else {
                     $_order[$_k] = 1;
                 }
             }
             $return = $return->sort($_order);
         }
         if ($this->sql->getLimit() !== null) {
             $return = $return->limit($this->sql->getLimit());
         }
         if ($this->sql->getOffset() !== null) {
             $return = $return->skip($this->sql->getOffset());
         }
     } elseif ($this->sql instanceof \MongoZend\Db\NoSql\Insert) {
         $_data = $this->sql->getValues();
         $return = $this->resource->insert($_data);
         $buffered = $this->sql->getRawState()['table'];
         $this->driver->getConnection()->storeLastGeneratedValue($buffered, $_data['_id']);
         //          $return = $this -> resource -> update( [ '_id' => $_data[ '_id' ] ], [ '$set' => array( "id" => (string) $_data[ '_id' ] ) ] );
     } elseif ($this->sql instanceof \MongoZend\Db\NoSql\Update) {
         $_data = $this->sql->getSet();
         $_where = $this->sql->getWhere();
         $return = $this->resource->update($_where, $_data);
         $buffered = $this->sql->getRawState()['table'];
         $this->driver->getConnection()->storeLastGeneratedValue($buffered, $_data['_id']);
     } elseif ($this->sql instanceof \MongoZend\Db\NoSql\Delete) {
         $_where = $this->sql->getWhere();
         $return = $this->resource->remove($_where);
         $buffered = $this->sql->getRawState()['table'];
         $this->driver->getConnection()->storeLastGeneratedValue($buffered, null);
     } else {
         $return = $this->resource->execute();
     }
     if ($this->profiler) {
         $this->profiler->profilerFinish();
     }
     if ($return === false) {
         throw new Exception\RuntimeException($this->getDriver()->getConnection()->getDB()->lastError());
     }
     $result = $this->driver->createResult($return, $buffered);
     return $result;
 }