#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);
}