Esempio n. 1
0
 /**
  * Prepares a prepared query.
  *
  * @param string $query The query to execute
  * @param array $queryComponents The components of the query to execute
  * @return bool|\mysqli_statement|\TYPO3\CMS\Dbal\Database\AdodbPreparedStatement
  * @throws \RuntimeException
  * @internal This method may only be called by \TYPO3\CMS\Core\Database\PreparedStatement
  */
 public function prepare_PREPAREDquery($query, array $queryComponents)
 {
     $pt = $this->debug ? GeneralUtility::milliseconds() : 0;
     // Get handler key and select API:
     $preparedStatement = NULL;
     switch ($queryComponents['handler']) {
         case 'native':
             $this->lastQuery = $query;
             $preparedStatement = parent::prepare_PREPAREDquery($this->lastQuery, $queryComponents);
             $this->resourceIdToTableNameMap[serialize($preparedStatement)] = $queryComponents['ORIG_tableName'];
             break;
         case 'adodb':
             /** @var \TYPO3\CMS\Dbal\Database\AdodbPreparedStatement $preparedStatement */
             $preparedStatement = GeneralUtility::makeInstance(\TYPO3\CMS\Dbal\Database\AdodbPreparedStatement::class, $query, $queryComponents, $this);
             if (!$preparedStatement->prepare()) {
                 $preparedStatement = FALSE;
             }
             break;
         case 'userdefined':
             throw new \RuntimeException('prepare_PREPAREDquery is not implemented for userdefined handlers', 1394620167);
             /*
             $queryParts = $queryComponents['queryParts'];
             $preparedStatement = $this->handlerInstance[$this->lastHandlerKey]->exec_SELECTquery($queryParts['SELECT'], $queryParts['FROM'], $queryParts['WHERE'], $queryParts['GROUPBY'], $queryParts['ORDERBY'], $queryParts['LIMIT']);
             if (is_object($preparedStatement)) {
             	$preparedStatement->TYPO3_DBAL_handlerType = 'userdefined';
             	// Setting handler type in result object (for later recognition!)
             	$preparedStatement->TYPO3_DBAL_tableList = $queryComponents['ORIG_tableName'];
             }
             break;
             */
     }
     if ($this->printErrors && $this->sql_error()) {
         debug(array($this->lastQuery, $this->sql_error()));
     }
     if ($this->debug) {
         $data = array('handlerType' => $queryComponents['handler'], 'args' => $queryComponents, 'ORIG_from_table' => $queryComponents['ORIG_tableName']);
         $this->debugHandler('prepare_PREPAREDquery', GeneralUtility::milliseconds() - $pt, $data);
     }
     // Return result handler.
     return $preparedStatement;
 }