/** * 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; }
/** * 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()); }
/** * 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); // } //} }
/** * 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; }
/** * 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); } }