Blame view

pma/libraries/parse_analyze.lib.php 1.74 KB
a1684257   Administrator   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
  <?php
  /* vim: set expandtab sw=4 ts=4 sts=4: */
  /**
   *
   * @package PhpMyAdmin
   */
  if (! defined('PHPMYADMIN')) {
      exit;
  }
  
  /**
   *
   */
  $GLOBALS['unparsed_sql'] = $sql_query;
  $parsed_sql = PMA_SQP_parse($sql_query);
  $analyzed_sql = PMA_SQP_analyze($parsed_sql);
  
  // for bug 780516: now that we use case insensitive preg_match
  // or flags from the analyser, do not put back the reformatted query
  // into $sql_query, to make this kind of query work without
  // capitalizing keywords:
  //
  // CREATE TABLE SG_Persons (
  //  id int(10) unsigned NOT NULL auto_increment,
  //  first varchar(64) NOT NULL default '',
  //  PRIMARY KEY  (`id`)
  // )
  
  // check for a real SELECT ... FROM
  $is_select = isset($analyzed_sql[0]['queryflags']['select_from']);
  
  // If the query is a Select, extract the db and table names and modify
  // $db and $table, to have correct page headers, links and left frame.
  // db and table name may be enclosed with backquotes, db is optionnal,
  // query may contain aliases.
  
  /**
   * @todo if there are more than one table name in the Select:
   * - do not extract the first table name
   * - do not show a table name in the page header
   * - do not display the sub-pages links)
   */
  if ($is_select) {
      $prev_db = $db;
      if (isset($analyzed_sql[0]['table_ref'][0]['table_true_name'])) {
          $table = $analyzed_sql[0]['table_ref'][0]['table_true_name'];
      }
      if (isset($analyzed_sql[0]['table_ref'][0]['db'])
        && strlen($analyzed_sql[0]['table_ref'][0]['db'])) {
          $db    = $analyzed_sql[0]['table_ref'][0]['db'];
      } else {
          $db = $prev_db;
      }
      // Nijel: don't change reload, if we already decided to reload in import
      if (empty($reload) && empty($GLOBALS['is_ajax_request'])) {
          $reload  = ($db == $prev_db) ? 0 : 1;
      }
  }
  ?>