2015-10-09 1 views
0

У меня есть собственное веб-приложение, и я пытаюсь получить доступ к таблице information_schema о том, как ее можно отключить на некоторых серверах. Как проверить, доступен ли он или нет?Как проверить таблицу mysql, доступную или нет через php

+1

https://ardamis.com/2008/05/26/a-php-script-for-testing-a-mysql -database-connection/ –

+0

Спасибо, чувак, он сработал – Developer

+1

Я отправляю ответ ниже для других. Сделайте это правильно, если это сработает для вас. Спасибо :) –

ответ

1

Запустить SHOW DATABASES и посмотреть, есть ли в списке information_schema.

Но это не имеет значения? Если вы являетесь самостоятельным хостингом, вы можете настроить его, но он вам нужен.

+0

Dude 'information_schema' не имеет отношения к какой-либо базе данных, поэтому он не будет отображаться в запросе 'show tables', и да, мне нужно узнать, сколько у пользователя доступа для' information_schema' – Developer

+0

Как его настроить? – Developer

+0

@ Разработчик I означает 'SHOW DATABASES' конечно> _> – Halcyon

1

Задайте базу данных как information_schema и запустите запрос «показать таблицы» из выбранной базы данных. Если у вас есть доступ на чтение, вы получите все таблицы из этого db. проверьте результат всех запросов. Решение

+0

Проклятый истинный чувак: +1: – Developer

2

Sample Чтобы решить эту проблему:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
    <title>MySQL Connection Test</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <style type="text/css"> 
    #wrapper { 
     width: 600px; 
     margin: 20px auto 0; 
     font: 1.2em Verdana, Arial, sans-serif; 
    } 
    input { 
     font-size: 1em; 
    } 
    #submit { 
     padding: 4px 8px; 
    } 
    </style> 
    </head> 

    <body> 

    <div id="wrapper"> 

    <?php 
     $action = htmlspecialchars($_GET['action'], ENT_QUOTES); 
    ?> 

    <?php if (!$action) { ?> 

     <h1>MySQL connection test</h1> 

    <form action="<?php echo $_SERVER['PHP_SELF']; ?>?action=test" id="mail" method="post"> 

     <table cellpadding="2"> 
      <tr> 
       <td>Hostname</td> 
       <td><input type="text" name="hostname" id="hostname" value="" size="30" tabindex="1" /></td> 
       <td>(usually "localhost")</td> 
      </tr> 
      <tr> 
       <td>Username</td> 
       <td><input type="text" name="username" id="username" value="" size="30" tabindex="2" /></td> 
       <td></td> 
      </tr> 
      <tr> 
       <td>Password</td> 
       <td><input type="text" name="password" id="password" value="" size="30" tabindex="3" /></td> 
       <td></td> 
      </tr> 
      <tr> 
       <td>Database</td> 
       <td><input type="text" name="database" id="database" value="" size="30" tabindex="4" /></td> 
       <td>(optional)</td> 
      </tr> 
      <tr> 
       <td></td> 
       <td><input type="submit" id="submit" value="Test Connection" tabindex="5" /></td> 
       <td></td> 
      </tr> 
     </table> 

    </form> 

    <?php } ?> 

    <?php if ($action == "test") { 

    // The variables have not been adequately sanitized to protect against SQL Injection attacks: http://us3.php.net/mysql_real_escape_string 

     $hostname = trim($_POST['hostname']); 
     $username = trim($_POST['username']); 
     $password = trim($_POST['password']); 
     $database = trim($_POST['database']); 

     $link = mysql_connect("$hostname", "$username", "$password"); 
      if (!$link) { 
       echo "<p>Could not connect to the server '" . $hostname . "'</p>\n"; 
       echo mysql_error(); 
      }else{ 
       echo "<p>Successfully connected to the server '" . $hostname . "'</p>\n"; 
    //   printf("MySQL client info: %s\n", mysql_get_client_info()); 
    //   printf("MySQL host info: %s\n", mysql_get_host_info()); 
    //   printf("MySQL server version: %s\n", mysql_get_server_info()); 
    //   printf("MySQL protocol version: %s\n", mysql_get_proto_info()); 
      } 
     if ($link && !$database) { 
      echo "<p>No database name was given. Available databases:</p>\n"; 
      $db_list = mysql_list_dbs($link); 
      echo "<pre>\n"; 
      while ($row = mysql_fetch_array($db_list)) { 
       echo $row['Database'] . "\n"; 
      } 
      echo "</pre>\n"; 
     } 
     if ($database) { 
     $dbcheck = mysql_select_db("$database"); 
      if (!$dbcheck) { 
       echo mysql_error(); 
      }else{ 
       echo "<p>Successfully connected to the database '" . $database . "'</p>\n"; 
       // Check tables 
       $sql = "SHOW TABLES FROM `$database`"; 
       $result = mysql_query($sql); 
       if (mysql_num_rows($result) > 0) { 
        echo "<p>Available tables:</p>\n"; 
        echo "<pre>\n"; 
        while ($row = mysql_fetch_row($result)) { 
         echo "{$row[0]}\n"; 
        } 
        echo "</pre>\n"; 
       } else { 
        echo "<p>The database '" . $database . "' contains no tables.</p>\n"; 
        echo mysql_error(); 
       } 
      } 
     } 
    } 
    ?> 

    </div><!-- end #wrapper --> 
    </body> 
    </html> 

Ссылка: [https://ardamis.com/2008/05/26/a-php-script-for-testing-a-mysql-database-connection/][1]

+0

он работал 'mysql_list_dbs' помог мне – Developer

+0

Я рад, что это вам помогло. –

+0

Спасибо, приятель, счастливая кодировка! – Developer

Смежные вопросы