/** * @var \Zend\Db\Adapter\Driver\Pdo\Result $results * @var \Zend\Db\Adapter\Driver\StatementInterface $statement */ function renderResults(Result $results, StatementInterface $statement = null) { $headers = []; $queryInformation = null; $outputData = null; $resultContents = null; if ($statement) { $queryInformation = SqlFormatter::format($statement->getSql()); if ($statement->getParameterContainer()->count()) { $queryInformation .= createTable(array_keys($statement->getParameterContainer()->getNamedArray()), [array_values($statement->getParameterContainer()->getNamedArray())]); } } if ($results->count()) { foreach ($results as $result) { $headers = array_keys($result); $outputData[] = $result; } } // Results if ($outputData) { $resultContents = createTable([$headers], $outputData); } // Wrapper Table $table = new Table(new ConsoleOutput()); $table->setHeaders([['Query Results', 'Generated SQL']])->setRows([[$resultContents, $queryInformation]])->render(); }
/** * Prepare statement * * @param \Zend\Db\Adapter\Adapter $adapter * @param \Zend\Db\Adapter\Driver\StatementInterface $statement * @return void */ public function prepareStatement(Adapter $adapter, StatementInterface $statement) { $driver = $adapter->getDriver(); $platform = $adapter->getPlatform(); $parameterContainer = $statement->getParameterContainer(); $prepareType = $driver->getPrepareType(); $parts = parent::getWhereParts(); $wherePart = ''; $whereParamIndex = 1; foreach ($parts as $part) { if (is_string($part)) { $wherePart .= $part; } elseif (is_array($part)) { $values = $part[1]; $types = isset($part[2]) ? $part[2] : array(); foreach ($values as $vIndex => $value) { if (isset($types[$vIndex]) && $types[$vIndex] == self::TYPE_IDENTIFIER) { $values[$vIndex] = $platform->quoteIdentifierInFragment($value); } elseif (isset($types[$vIndex]) && $types[$vIndex] == self::TYPE_VALUE) { if ($prepareType == 'positional') { $parameterContainer->offsetSet(null, $value); $values[$vIndex] = $driver->formatParameterName(null); } elseif ($prepareType == 'named') { $name = 'where' . $whereParamIndex++; $values[$vIndex] = $driver->formatParameterName($name); $parameterContainer->offsetSet($name, $value); } } } $wherePart .= vsprintf($part[0], $values); } } $sql = $statement->getSql(); $sql .= sprintf($this->specification, $wherePart); $statement->setSql($sql); }