Как вывести список всех таблиц в MSSQL?

#php #sql-server #database #select

#php #sql-сервер #База данных #выберите

Вопрос:

Я использую приведенный ниже код для отображения таблиц в моей базе данных.

Я получаю «Подключено к базе данных», но больше ничего. Правильный ли мой код? могу ли я использовать другой способ получения необходимой мне информации?

 <?php 
$link = mssql_connect('HOST', 'user', 'pass');

if (!$link || !mssql_select_db('dbname', $link)) {
    die('Unable to connect or select database!');
}else{
echo"Connected to database";
}


$v = mssql_query("Select name from sysobjects where type like 'u'");
$row = mssql_fetch_array($v);

echo "<br>";  echo $row[0]; echo "<br>";


mssql_free_result($v);
?>
  

Комментарии:

1. Я не уверен на 100%, но сработает ли это: mssql_fetch_array($v, MSSQL_NUM); . Кроме того, вы уверены в выбранной базе данных?

2. Похоже, ваш запрос работает на MSSQL2000. Вы получаете ошибку или что-то в этом роде?

3. Ошибки нет, просто подключено к базе данных и больше ничего. Я уверен насчет базы данных.. как я могу узнать, не проблема ли это с разрешениями? Я не размещаю базу данных, и мне нужно знать, прежде чем связываться с хостом. Еще раз спасибо

Ответ №1:

Альтернативный способ, также извлекающий имя схемы

 SELECT TABLE_CATALOG ,
        TABLE_SCHEMA ,
        TABLE_NAME ,
        TABLE_TYPE
FROM INFORMATION_SCHEMA.TABLES
  

Комментарии:

1. Спасибо MadBender, но по-прежнему никаких результатов, пустая страница. Как вы думаете, проблема может быть в разрешениях базы данных или чем-то подобном? Я не размещаю базу данных, и люди, которые ее размещают, возможно, что-то забыли. Еще раз спасибо

2. Да, это возможно. Попробуйте подключиться и выполнить этот запрос с помощью какого-нибудь приложения, такого как SSMS или SQL Explorer. Это может выдать вам более подробное сообщение об ошибке.

3. Или, может быть, в этой базе данных нет таблиц

4. Хм, я хотел бы установить что-нибудь из этого на хост, но я не могу, другой способ сделать это? Еще раз спасибо

5. Вероятно, вы правы. Я перейду к сервису хостинга. Огромное спасибо!

Ответ №2:

 SELECT * FROM sys.Tables;
  

Должно получиться волшебство:-D

И если вы хотите увидеть все столбцы, я бы сделал

 SELECT TOP 1 * From Tablename;
  

таким образом, вы получите одну строку со всеми столбцами, это не идеально, но это делает свое дело, если вы просто хотите знать, что

Ответ №3:

Я делаю это:

 // Check if table exists
        $sqlExist = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'dem';";
        $stmtExist = sqlsrv_query( $conn_mssql, $sqlExist );
        $exist = $row = sqlsrv_fetch_array( $stmtExist, SQLSRV_FETCH_ASSOC);

        if ($exist == "") {
          echo "Die abgefragte Tabelle existiert nicht oder ist nicht erreichbar!";
        } else {
          // MSSQL QUERY ITSELF
          $sql = "SELECT * from dem;";
          $stmt = sqlsrv_query( $conn_mssql, $sql );
          if( $stmt === false) {
              die( print_r( sqlsrv_errors(), true) );
          }

          while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
            echo $row['id'] . " " . $row['cdemo2'] . ", " . $row['cdemo1'] . "<br>";
          }

          sqlsrv_free_stmt( $stmt);

        }