/** * @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); }
/** * Prepare the delete statement * * @param Adapter $adapter * @param StatementInterface $statement * @return void */ public function prepareStatement(Adapter $adapter, StatementInterface $statement) { $platform = $adapter->getPlatform(); $parameterContainer = $statement->getParameterContainer(); if (!$parameterContainer instanceof ParameterContainer) { $parameterContainer = new ParameterContainer(); $statement->setParameterContainer($parameterContainer); } $table = $platform->quoteIdentifier($this->table); $sql = sprintf($this->specifications[self::SPECIFICATION_DELETE], $table); // process where if ($this->where->count() > 0) { $whereParts = $this->processExpression($this->where, $platform, $adapter->getDriver(), 'where'); if (count($whereParts['parameters']) > 0) { $parameterContainer->merge($whereParts['parameters']); } $sql .= ' ' . sprintf($this->specifications[self::SPECIFICATION_WHERE], $whereParts['sql']); } $statement->setSql($sql); }
/** * Prepare statement * * @param \Zend\Db\Adapter\Adapter $adapter * @param \Zend\Db\Adapter\Driver\StatementInterface $statement * @return void */ public function prepareStatement(Adapter $adapter, StatementInterface $statement) { // ensure statement has a ParameterContainer $parameterContainer = $statement->getParameterContainer(); if (!$parameterContainer instanceof ParameterContainer) { $parameterContainer = new ParameterContainer(); $statement->setParameterContainer($parameterContainer); } $sqls = array(); $parameters = array(); $platform = $adapter->getPlatform(); foreach ($this->specifications as $name => $specification) { $parameters[$name] = $this->{'process' . $name}($platform, $adapter, $parameterContainer, $sqls, $parameters); if ($specification && is_array($parameters[$name])) { $sqls[$name] = $this->createSqlFromSpecificationAndParameters($specification, $parameters[$name]); } } $sql = implode(' ', $sqls); $statement->setSql($sql); return; }
/** * Prepare statement * * @param Adapter $adapter * @param StatementInterface $statement * @return void */ public function prepareStatement(Adapter $adapter, StatementInterface $statement) { $driver = $adapter->getDriver(); $platform = $adapter->getPlatform(); $parameterContainer = $statement->getParameterContainer(); if (!$parameterContainer instanceof ParameterContainer) { $parameterContainer = new ParameterContainer(); $statement->setParameterContainer($parameterContainer); } $table = $platform->quoteIdentifier($this->table); $columns = array(); $values = array(); foreach ($this->columns as $cIndex => $column) { $columns[$cIndex] = $platform->quoteIdentifier($column); $values[$cIndex] = $driver->formatParameterName($column); $parameterContainer->offsetSet($column, $this->values[$cIndex]); } $sql = sprintf( $this->specifications[self::SPECIFICATION_INSERT], $table, implode(', ', $columns), implode(', ', $values) ); $statement->setSql($sql); }
/** * 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(); if (!$parameterContainer instanceof ParameterContainer) { $parameterContainer = new ParameterContainer(); $statement->setParameterContainer($parameterContainer); } $prepareType = $driver->getPrepareType(); $table = $platform->quoteIdentifier($this->table); // if ($this->schema != '') { // $table = $platform->quoteIdentifier($this->schema) // . $platform->getIdentifierSeparator() // . $table; // } $set = $this->set; if (is_array($set)) { $setSql = array(); $values = array(); foreach ($set as $column => $value) { $parameterContainer->offsetSet($column, $value); $setSql[] = $platform->quoteIdentifier($column) . ' = ' . $driver->formatParameterName($column); } $set = implode(', ', $setSql); } $sql = sprintf($this->specifications[self::SPECIFICATION_UPDATE], $table, $set); // process where if ($this->where->count() > 0) { $whereParts = $this->processExpression($this->where, $platform, $adapter->getDriver(), 'where'); if (count($whereParts['parameters']) > 0) { $parameterContainer->merge($whereParts['parameters']); } $sql .= ' ' . sprintf($this->specifications[self::SPECIFICATION_WHERE], $whereParts['sql']); } $statement->setSql($sql); }
/** * Prepare statement * * @param Adapter $adapter * @param StatementInterface $statement * @return void */ public function prepareStatement(Adapter $adapter, StatementInterface $statement) { $driver = $adapter->getDriver(); $platform = $adapter->getPlatform(); $parameterContainer = $statement->getParameterContainer(); $prepareType = $driver->getPrepareType(); $table = $platform->quoteIdentifier($this->table); if ($this->databaseOrSchema != '') { $table = $platform->quoteIdentifier($this->databaseOrSchema) . $platform->getIdentifierSeparator() . $table; } $columns = array(); $values = array(); foreach ($this->columns as $cIndex => $column) { $columns[$cIndex] = $platform->quoteIdentifier($column); if ($prepareType == 'positional') { $parameterContainer->offsetSet(null, $this->values[$cIndex]); $values[$cIndex] = $driver->formatParameterName(null); } elseif ($prepareType == 'named') { $values[$cIndex] = $driver->formatParameterName($column); $parameterContainer->offsetSet($column, $this->values[$cIndex]); } } $sql = sprintf($this->specification, $table, implode(', ', $columns), implode(', ', $values)); $statement->setSql($sql); }
/** * 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(); $table = $platform->quoteIdentifier($this->table); if ($this->databaseOrSchema != '') { $table = $platform->quoteIdentifier($this->databaseOrSchema) . $platform->getIdentifierSeparator() . $table; } $set = $this->set; if (is_array($set)) { $setSql = array(); $values = array(); foreach ($set as $column => $value) { if ($prepareType == 'positional') { $parameterContainer->offsetSet(null, $value); $name = $driver->formatParameterName(null); } elseif ($prepareType == 'named') { $parameterContainer->offsetSet($column, $value); $name = $driver->formatParameterName($column); } $setSql[] = $platform->quoteIdentifier($column) . ' = ' . $name; } $set = implode(', ', $setSql); } $sql = sprintf($this->specification, $table, $set); $statement->setSql($sql); $this->where->prepareStatement($adapter, $statement); }