Blame view

pma/libraries/db_table_exists.lib.php 2.54 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
  <?php
  /* vim: set expandtab sw=4 ts=4 sts=4: */
  /**
   * Ensure the database and the table exist (else move to the "parent" script)
   * and display headers
   *
   * @package PhpMyAdmin
   */
  if (! defined('PHPMYADMIN')) {
      exit;
  }
  
  if (empty($is_db)) {
      if (strlen($db)) {
          $is_db = @PMA_DBI_select_db($db);
      } else {
          $is_db = false;
      }
  
      if (! $is_db) {
          // not a valid db name -> back to the welcome page
          if (! defined('IS_TRANSFORMATION_WRAPPER')) {
              $url_params = array('reload' => 1);
              if (isset($message)) {
                  $url_params['message'] = $message;
              }
              if (! empty($sql_query)) {
                  $url_params['sql_query'] = $sql_query;
              }
              if (isset($show_as_php)) {
                  $url_params['show_as_php'] = $show_as_php;
              }
              PMA_sendHeaderLocation(
                  $cfg['PmaAbsoluteUri'] . 'main.php'
                      . PMA_generate_common_url($url_params, '&'));
          }
          exit;
      }
  } // end if (ensures db exists)
  
  if (empty($is_table) && !defined('PMA_SUBMIT_MULT') && ! defined('TABLE_MAY_BE_ABSENT')) {
      // Not a valid table name -> back to the db_sql.php
  
      if (strlen($table)) {
          $is_table = isset(PMA_Table::$cache[$db][$table]);
  
          if (! $is_table) {
              $_result = PMA_DBI_try_query(
                  'SHOW TABLES LIKE \'' . PMA_sqlAddSlashes($table, true) . '\';',
                  null, PMA_DBI_QUERY_STORE);
              $is_table = @PMA_DBI_num_rows($_result);
              PMA_DBI_free_result($_result);
          }
      } else {
          $is_table = false;
      }
  
      if (! $is_table) {
          if (! defined('IS_TRANSFORMATION_WRAPPER')) {
              if (strlen($table)) {
                  // SHOW TABLES doesn't show temporary tables, so try select
                  // (as it can happen just in case temporary table, it should be
                  // fast):
  
                  /**
                   * @todo should this check really only happen if IS_TRANSFORMATION_WRAPPER?
                   */
                  $_result = PMA_DBI_try_query(
                      'SELECT COUNT(*) FROM ' . PMA_backquote($table) . ';',
                      null, PMA_DBI_QUERY_STORE);
                  $is_table = ($_result && @PMA_DBI_num_rows($_result));
                  PMA_DBI_free_result($_result);
              }
  
              if (! $is_table) {
                  include './db_sql.php';
                  exit;
              }
          }
  
          if (! $is_table) {
              exit;
          }
      }
  } // end if (ensures table exists)
  ?>