code: public function execute()
      {
          if ($this->statement == null) {
              $this->statement = Database::get($this->database)->{($this->isCritical === true ? 'getMasterLink' : 'getLink')}()->prepare($this->toSql());
          }
          foreach ($this->parameters as $name => $value) {
              $type = \PDO::PARAM_STR;
              if (is_int($value) === true) {
                  $type = \PDO::PARAM_INT;
              } elseif (is_bool($value) === true) {
                  $type = \PDO::PARAM_BOOL;
              } elseif (is_null($value) === true) {
                  $type = \PDO::PARAM_NULL;
              }
              $this->statement->bindValue($name, $value, $type);
          }
          $result = $this->statement->execute();
          $this->errorInfo = $this->statement->errorInfo();
          if ($this->getErrorState() != '00000') {
              Logger::get()->error('select query failed : ' . $this->getErrorMessage() . ' (' . $this->toSql() . ')');
              if (constant('STRAY_ENV') === 'development') {
                  throw new AppException('select query failed : ' . $this->getErrorMessage() . ' (' . $this->toSql() . ')');
              }
          }
  
          return $result;
      }
docs: Execute the constructed query.
  
  @throws AppException on SQL error
  @return bool         true if the query is successfully executed