vendor/doctrine/dbal/src/Driver/PDO/Statement.php line 121

  1. <?php
  2. namespace Doctrine\DBAL\Driver\PDO;
  3. use Doctrine\DBAL\Driver\Result as ResultInterface;
  4. use Doctrine\DBAL\Driver\Statement as StatementInterface;
  5. use Doctrine\DBAL\ParameterType;
  6. use Doctrine\Deprecations\Deprecation;
  7. use PDOException;
  8. use PDOStatement;
  9. use function array_slice;
  10. use function func_get_args;
  11. use function func_num_args;
  12. final class Statement implements StatementInterface
  13. {
  14.     private PDOStatement $stmt;
  15.     /** @internal The statement can be only instantiated by its driver connection. */
  16.     public function __construct(PDOStatement $stmt)
  17.     {
  18.         $this->stmt $stmt;
  19.     }
  20.     /**
  21.      * {@inheritdoc}
  22.      */
  23.     public function bindValue($param$value$type ParameterType::STRING)
  24.     {
  25.         if (func_num_args() < 3) {
  26.             Deprecation::trigger(
  27.                 'doctrine/dbal',
  28.                 'https://github.com/doctrine/dbal/pull/5558',
  29.                 'Not passing $type to Statement::bindValue() is deprecated.'
  30.                     ' Pass the type corresponding to the parameter being bound.',
  31.             );
  32.         }
  33.         $pdoType ParameterTypeMap::convertParamType($type);
  34.         try {
  35.             return $this->stmt->bindValue($param$value$pdoType);
  36.         } catch (PDOException $exception) {
  37.             throw Exception::new($exception);
  38.         }
  39.     }
  40.     /**
  41.      * {@inheritDoc}
  42.      *
  43.      * @deprecated Use {@see bindValue()} instead.
  44.      *
  45.      * @param mixed    $param
  46.      * @param mixed    $variable
  47.      * @param int      $type
  48.      * @param int|null $length
  49.      * @param mixed    $driverOptions The usage of the argument is deprecated.
  50.      */
  51.     public function bindParam(
  52.         $param,
  53.         &$variable,
  54.         $type ParameterType::STRING,
  55.         $length null,
  56.         $driverOptions null
  57.     ): bool {
  58.         Deprecation::trigger(
  59.             'doctrine/dbal',
  60.             'https://github.com/doctrine/dbal/pull/5563',
  61.             '%s is deprecated. Use bindValue() instead.',
  62.             __METHOD__,
  63.         );
  64.         if (func_num_args() < 3) {
  65.             Deprecation::trigger(
  66.                 'doctrine/dbal',
  67.                 'https://github.com/doctrine/dbal/pull/5558',
  68.                 'Not passing $type to Statement::bindParam() is deprecated.'
  69.                     ' Pass the type corresponding to the parameter being bound.',
  70.             );
  71.         }
  72.         if (func_num_args() > 4) {
  73.             Deprecation::triggerIfCalledFromOutside(
  74.                 'doctrine/dbal',
  75.                 'https://github.com/doctrine/dbal/issues/4533',
  76.                 'The $driverOptions argument of Statement::bindParam() is deprecated.',
  77.             );
  78.         }
  79.         $pdoType ParameterTypeMap::convertParamType($type);
  80.         try {
  81.             return $this->stmt->bindParam(
  82.                 $param,
  83.                 $variable,
  84.                 $pdoType,
  85.                 $length ?? 0,
  86.                 ...array_slice(func_get_args(), 4),
  87.             );
  88.         } catch (PDOException $exception) {
  89.             throw Exception::new($exception);
  90.         }
  91.     }
  92.     /**
  93.      * {@inheritdoc}
  94.      */
  95.     public function execute($params null): ResultInterface
  96.     {
  97.         if ($params !== null) {
  98.             Deprecation::trigger(
  99.                 'doctrine/dbal',
  100.                 'https://github.com/doctrine/dbal/pull/5556',
  101.                 'Passing $params to Statement::execute() is deprecated. Bind parameters using'
  102.                     ' Statement::bindParam() or Statement::bindValue() instead.',
  103.             );
  104.         }
  105.         try {
  106.             $this->stmt->execute($params);
  107.         } catch (PDOException $exception) {
  108.             throw Exception::new($exception);
  109.         }
  110.         return new Result($this->stmt);
  111.     }
  112. }