![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/laminas/laminas-db/src/Adapter/Driver/Pdo/ |
<?php namespace Laminas\Db\Adapter\Driver\Pdo; use Laminas\Db\Adapter\Driver\StatementInterface; use Laminas\Db\Adapter\Exception; use Laminas\Db\Adapter\ParameterContainer; use Laminas\Db\Adapter\Profiler; use PDOException; use PDOStatement; use function implode; use function is_array; use function is_bool; use function is_int; class Statement implements StatementInterface, Profiler\ProfilerAwareInterface { /** @var \PDO */ protected $pdo; /** @var Profiler\ProfilerInterface */ protected $profiler; /** @var Pdo */ protected $driver; /** @var string */ protected $sql = ''; /** @var bool */ protected $isQuery; /** @var ParameterContainer */ protected $parameterContainer; /** @var bool */ protected $parametersBound = false; /** @var PDOStatement */ protected $resource; /** @var bool */ protected $isPrepared = false; /** * Set driver * * @return $this Provides a fluent interface */ public function setDriver(Pdo $driver) { $this->driver = $driver; return $this; } /** * @return $this Provides a fluent interface */ public function setProfiler(Profiler\ProfilerInterface $profiler) { $this->profiler = $profiler; return $this; } /** * @return null|Profiler\ProfilerInterface */ public function getProfiler() { return $this->profiler; } /** * Initialize * * @return $this Provides a fluent interface */ public function initialize(\PDO $connectionResource) { $this->pdo = $connectionResource; return $this; } /** * Set resource * * @return $this Provides a fluent interface */ public function setResource(PDOStatement $pdoStatement) { $this->resource = $pdoStatement; return $this; } /** * Get resource * * @return mixed */ public function getResource() { return $this->resource; } /** * Set sql * * @param string $sql * @return $this Provides a fluent interface */ public function setSql($sql) { $this->sql = $sql; return $this; } /** * Get sql * * @return string */ public function getSql() { return $this->sql; } /** * @return $this Provides a fluent interface */ public function setParameterContainer(ParameterContainer $parameterContainer) { $this->parameterContainer = $parameterContainer; return $this; } /** * @return ParameterContainer */ public function getParameterContainer() { return $this->parameterContainer; } /** * @param string $sql * @throws Exception\RuntimeException */ public function prepare($sql = null) { if ($this->isPrepared) { throw new Exception\RuntimeException('This statement has been prepared already'); } if ($sql === null) { $sql = $this->sql; } $this->resource = $this->pdo->prepare($sql); if ($this->resource === false) { $error = $this->pdo->errorInfo(); throw new Exception\RuntimeException($error[2]); } $this->isPrepared = true; } /** * @return bool */ public function isPrepared() { return $this->isPrepared; } /** * @param null|array|ParameterContainer $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) { $this->bindParametersFromContainer(); } /** END Standard ParameterContainer Merging Block */ if ($this->profiler) { $this->profiler->profilerStart($this); } try { $this->resource->execute(); } catch (PDOException $e) { if ($this->profiler) { $this->profiler->profilerFinish(); } $code = $e->getCode(); if (! is_int($code)) { $code = 0; } throw new Exception\InvalidQueryException( 'Statement could not be executed (' . implode(' - ', $this->resource->errorInfo()) . ')', $code, $e ); } if ($this->profiler) { $this->profiler->profilerFinish(); } return $this->driver->createResult($this->resource, $this); } /** * Bind parameters from container */ protected function bindParametersFromContainer() { if ($this->parametersBound) { return; } $parameters = $this->parameterContainer->getNamedArray(); foreach ($parameters as $name => &$value) { if (is_bool($value)) { $type = \PDO::PARAM_BOOL; } elseif (is_int($value)) { $type = \PDO::PARAM_INT; } else { $type = \PDO::PARAM_STR; } if ($this->parameterContainer->offsetHasErrata($name)) { switch ($this->parameterContainer->offsetGetErrata($name)) { case ParameterContainer::TYPE_INTEGER: $type = \PDO::PARAM_INT; break; case ParameterContainer::TYPE_NULL: $type = \PDO::PARAM_NULL; break; case ParameterContainer::TYPE_LOB: $type = \PDO::PARAM_LOB; break; } } // parameter is named or positional, value is reference $parameter = is_int($name) ? $name + 1 : $this->driver->formatParameterName($name); $this->resource->bindParam($parameter, $value, $type); } } /** * Perform a deep clone * * @return void */ public function __clone() { $this->isPrepared = false; $this->parametersBound = false; $this->resource = null; if ($this->parameterContainer) { $this->parameterContainer = clone $this->parameterContainer; } } }