Ejemplo n.º 1
0
/**
 * Handle remembered sorting order, only for single table query
 *
 * @param string $db                    database name
 * @param string $table                 table name
 * @param array  &$analyzed_sql_results the analyzed query results
 * @param string &$full_sql_query       SQL query
 *
 * @return void
 */
function PMA_handleSortOrder($db, $table, &$analyzed_sql_results, &$full_sql_query)
{
    $pmatable = new Table($table, $db);
    if (empty($analyzed_sql_results['order'])) {
        // Retrieving the name of the column we should sort after.
        $sortCol = $pmatable->getUiProp(Table::PROP_SORTED_COLUMN);
        if (empty($sortCol)) {
            return;
        }
        // Remove the name of the table from the retrieved field name.
        $sortCol = str_replace(PMA\libraries\Util::backquote($table) . '.', '', $sortCol);
        // Create the new query.
        $full_sql_query = SqlParser\Utils\Query::replaceClause($analyzed_sql_results['statement'], $analyzed_sql_results['parser']->list, 'ORDER BY ' . $sortCol);
        // TODO: Avoid reparsing the query.
        $analyzed_sql_results = SqlParser\Utils\Query::getAll($full_sql_query);
    } else {
        // Store the remembered table into session.
        $pmatable->setUiProp(Table::PROP_SORTED_COLUMN, SqlParser\Utils\Query::getClause($analyzed_sql_results['statement'], $analyzed_sql_results['parser']->list, 'ORDER BY'));
    }
}
Ejemplo n.º 2
0
 /**
  * Get url sql query without conditions to shorten URLs
  *
  * @param array $analyzed_sql_results analyzed sql results
  *
  * @return  string  $url_sql        analyzed sql query
  *
  * @access  private
  *
  * @see     _getTableBody()
  */
 private function _getUrlSqlQuery($analyzed_sql_results)
 {
     if ($analyzed_sql_results['querytype'] != 'SELECT' || mb_strlen($this->__get('sql_query')) < 200) {
         return $this->__get('sql_query');
     }
     $query = 'SELECT ' . SqlParser\Utils\Query::getClause($analyzed_sql_results['statement'], $analyzed_sql_results['parser']->list, 'SELECT');
     $from_clause = SqlParser\Utils\Query::getClause($analyzed_sql_results['statement'], $analyzed_sql_results['parser']->list, 'FROM');
     if (!empty($from_clause)) {
         $query .= ' FROM ' . $from_clause;
     }
     return $query;
 }
Ejemplo n.º 3
0
/**
 * Transforms a DELETE query into SELECT statement.
 *
 * @param array $analyzed_sql_results Analyzed SQL results from parser.
 *
 * @return string SQL query
 */
function PMA_getSimulatedDeleteQuery($analyzed_sql_results)
{
    $table_references = SqlParser\Utils\Query::getTables($analyzed_sql_results['statement']);
    $where = SqlParser\Utils\Query::getClause($analyzed_sql_results['statement'], $analyzed_sql_results['parser']->list, 'WHERE');
    if (empty($where)) {
        $where = '1';
    }
    $order_and_limit = '';
    if (!empty($analyzed_sql_results['statement']->order)) {
        $order_and_limit .= ' ORDER BY ' . SqlParser\Utils\Query::getClause($analyzed_sql_results['statement'], $analyzed_sql_results['parser']->list, 'ORDER BY');
    }
    if (!empty($analyzed_sql_results['statement']->limit)) {
        $order_and_limit .= ' LIMIT ' . SqlParser\Utils\Query::getClause($analyzed_sql_results['statement'], $analyzed_sql_results['parser']->list, 'LIMIT');
    }
    return 'SELECT * FROM ' . implode(', ', $table_references) . ' WHERE ' . $where . $order_and_limit;
}