Beispiel #1
0
 /**
  * Execute
  *
  * @param  ParameterContainer|null $parameters
  * @throws Exception\InvalidQueryException
  * @return Result
  */
 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) {
         $parameters = $this->parameterContainer->getPositionalArray();
     }
     /** END Standard ParameterContainer Merging Block */
     if ($this->profiler) {
         $this->profiler->profilerStart($this);
     }
     $resultResource = pg_execute($this->pgsql, $this->statementName, (array) $parameters);
     if ($this->profiler) {
         $this->profiler->profilerFinish();
     }
     if ($resultResource === false) {
         throw new Exception\InvalidQueryException(pg_last_error());
     }
     $result = $this->driver->createResult($resultResource);
     return $result;
 }
 /**
  * Execute
  *
  * @param null $parameters
  * @return Result
  */
 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);
     }
     /** END Standard ParameterContainer Merging Block */
     if ($this->profiler) {
         $this->profiler->profilerStart($this);
     }
     set_error_handler(function () {
     }, E_WARNING);
     // suppress warnings
     $response = db2_execute($this->resource, $this->parameterContainer->getPositionalArray());
     restore_error_handler();
     if ($this->profiler) {
         $this->profiler->profilerFinish();
     }
     if ($response === false) {
         throw new Exception\RuntimeException(db2_stmt_errormsg($this->resource));
     }
     $result = $this->driver->createResult($this->resource);
     return $result;
 }
Beispiel #3
0
 /**
  * Bind parameters from container
  *
  */
 protected function bindParametersFromContainer()
 {
     $values = $this->parameterContainer->getPositionalArray();
     $position = 0;
     foreach ($values as $value) {
         $this->parameterReferences[$position++][0] = $value;
     }
 }
 /**
  * @testdox unit test: Test offsetSet() works via method call and array access
  * @covers Zend\Db\Adapter\ParameterContainer::offsetSet
  */
 public function testOffsetSet()
 {
     $this->parameterContainer->offsetSet('boo', 'baz');
     $this->assertEquals('baz', $this->parameterContainer->offsetGet('boo'));
     $this->parameterContainer->offsetSet('1', 'book', ParameterContainer::TYPE_STRING);
     $this->assertEquals(array('foo' => 'bar', 'boo' => 'baz', '1' => 'book'), $this->parameterContainer->getNamedArray());
     $this->assertEquals('string', $this->parameterContainer->offsetGetErrata('1'));
     // test that setting an index applies to correct named parameter
     $this->parameterContainer[0] = 'Zero';
     $this->parameterContainer[1] = 'One';
     $this->assertEquals(array('foo' => 'Zero', 'boo' => 'One', '1' => 'book'), $this->parameterContainer->getNamedArray());
     $this->assertEquals(array(0 => 'Zero', 1 => 'One', 2 => 'book'), $this->parameterContainer->getPositionalArray());
     // test no-index applies
     $this->parameterContainer['buffer'] = 'A buffer Element';
     $this->parameterContainer[] = 'Second To Last';
     $this->parameterContainer[] = 'Last';
     $this->assertEquals(array('foo' => 'Zero', 'boo' => 'One', '1' => 'book', 'buffer' => 'A buffer Element', '4' => 'Second To Last', '5' => 'Last'), $this->parameterContainer->getNamedArray());
     $this->assertEquals(array(0 => 'Zero', 1 => 'One', 2 => 'book', 3 => 'A buffer Element', 4 => 'Second To Last', 5 => 'Last'), $this->parameterContainer->getPositionalArray());
 }
Beispiel #5
0
 /**
  * Bind parameters from container
  *
  */
 protected function bindParametersFromContainer()
 {
     $values = $this->parameterContainer->getPositionalArray();
     $position = 0;
     foreach ($values as $value) {
         $this->parameterReferences[$position++][0] = $value;
     }
     // @todo bind errata
     //foreach ($this->parameterContainer as $name => &$value) {
     //    $p[$position][0] = $value;
     //    $position++;
     //    if ($this->parameterContainer->offsetHasErrata($name)) {
     //        $p[$position][3] = $this->parameterContainer->offsetGetErrata($name);
     //    }
     //}
 }
Beispiel #6
0
 /**
  * Execute
  *
  * @param null|array|ParameterContainer $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);
     }
     /** END Standard ParameterContainer Merging Block */
     if ($this->profiler) {
         $this->profiler->profilerStart($this);
     }
     $args = $this->parameterContainer->getPositionalArray();
     $argArray = [$this->resource];
     if (!empty($args)) {
         $argArray = array_merge($argArray, $args);
     }
     //die(var_dump($argArray));
     $response = call_user_func_array('ibase_execute', $argArray);
     if ($this->profiler) {
         $this->profiler->profilerFinish();
     }
     if ($response === false) {
         throw new Exception\RuntimeException(ibase_errmsg());
     }
     $result = $this->driver->createResult($response);
     return $result;
 }
Beispiel #7
0
 /**
  * Bind parameters from container
  * 
  * @param ParameterContainer $pContainer
  */
 protected function bindParametersFromContainer(ParameterContainer $pContainer)
 {
     $parameters = $pContainer->getPositionalArray();
     $type = '';
     $args = array();
     foreach ($parameters as $position => &$value) {
         switch ($pContainer->offsetGetErrata($position)) {
             case ParameterContainer::TYPE_DOUBLE:
                 $type .= 'd';
                 break;
             case ParameterContainer::TYPE_NULL:
                 $value = null;
                 // as per @see http://www.php.net/manual/en/mysqli-stmt.bind-param.php#96148
             // as per @see http://www.php.net/manual/en/mysqli-stmt.bind-param.php#96148
             case ParameterContainer::TYPE_INTEGER:
                 $type .= 'i';
                 break;
             case ParameterContainer::TYPE_STRING:
             default:
                 $type .= 's';
                 break;
         }
         $args[] =& $value;
     }
     if ($args) {
         array_unshift($args, $type);
         call_user_func_array(array($this->resource, 'bind_param'), $args);
     }
 }