2010-06-02 4 views
0
connect(); 
$arr = mssql_fetch_assoc(mssql_query("SELECT Applications.ProductName, 
     Applications.ProductVersion, Applications.ProductSize, 
     Applications.Description, Applications.ProductKey, Applications.ProductKeyID, 
     Applications.AutomatedInstaller, Applications.AutomatedInstallerName, 
     Applications.ISO, Applications.ISOName, Applications.Internet, 
     Applications.InternetURL, Applications.DatePublished, Applications.LicenseID, 
     Applications.InstallationGuide, Vendors.VendorName 
FROM Applications 
INNER JOIN Vendors ON Applications.VendorID = Vendors.VendorID 
WHERE ApplicationID = ".$ApplicationID)); 

$query1 = mssql_query("SELECT Issues.AppID, Issues.KnownIssues 
     FROM Issues 
     WHERE Issues.AppID=".$ApplicationID); 
$issues = mssql_fetch_assoc($query1); 
$query2 = mssql_query("SELECT ApplicationInfo.AppID, 
       ApplicationInfo.Support_Status, ApplicationInfo.UD_Training, 
       ApplicationInfo.AtomicTraining, ApplicationInfo.VendorURL 
    FROM ApplicationInfo 
    WHERE ApplicationInfo.AppID = ".$ApplicationID); 
$row = mssql_fetch_assoc($query2); 
function connect(){ 
$connect = mssql_connect(DBSERVER, DBO, DBPW) or 
     die("Unable to connect to server"); 
$selected = mssql_select_db(DBNAME, $connect) or 
     die("Unable to connect to database"); 
return $connect; 
} 

Выше приведен код. Первый запрос/fetch_assoc работает отлично, однако следующие 2 запроса терпят неудачу, и я не могу понять, почему. Ниже приведено сообщение об ошибке, которое отображается с помощью php:Почему мой запрос SQL Server не работает?

Warning: mssql_query() [function.mssql-query]: message: Invalid object name 'Issues'. (severity 16) in /srv/www/htdocs/agreement.php on line 47

Warning: mssql_query() [function.mssql-query]: General SQL Server error: Check messages from the SQL Server (severity 16) in /srv/www/htdocs/agreement.php on line 47 Warning: mssql_query() [function.mssql-query]: Query failed in /srv/www/htdocs/agreement.php on line 47

Warning: mssql_fetch_assoc(): supplied argument is not a valid MS SQL-result resource in /srv/www/htdocs/agreement.php on line 48

Warning: mssql_query() [function.mssql-query]: message: Invalid object name 'software.software_dbo.ApplicationInfo'. (severity 16) in /srv/www/htdocs/agreement.php on line 51

Warning: mssql_query() [function.mssql-query]: General SQL Server error: Check messages from the SQL Server (severity 16) in /srv/www/htdocs/agreement.php on line 51

Warning: mssql_query() [function.mssql-query]: Query failed in /srv/www/htdocs/agreement.php on line 51

Warning: mssql_fetch_assoc(): supplied argument is not a valid MS SQL-result resource in /srv/www/htdocs/agreement.php on line 52

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

+3

Эти ошибки пытаются сказать вам, что некоторые таблицы/поля вы ссылка в вашем запросе недействительна или не существует. Двойная проверка для типа-o. –

+0

'ApplicationInfo' отличается от' software.software_dbo.ApplicationInfo' –

+0

Запросы * look * ok (допуская определенные предположения о структуре вашей базы данных). Работают ли они, когда вы запускаете их непосредственно из окна запроса SSMS? Если это так, то это не сами запросы. –

ответ

2

Убедитесь, что вы запрашивая правильную базу данных или схему.

software.software_dbo.ApplicationInfo средства:

  • база данных с именем software
  • схема с именем software_dbo - скорее всего, это проблема. Вероятно, это dbo на вашем SQL Server.
  • вид/таблица с именем ApplicationInfo

Возможно проверить, что значение DBO, среди прочих аргументов, в этом заявлении: $connect = mssql_connect(DBSERVER, DBO, DBPW)

+0

Спасибо. Замена software_dbo на dbo решила проблему. Вопрос tho - Почему первый запрос не нужен, а другие 2? –

0

Проверьте, что пользователь, с которым вы подключаетесь, имеет разрешение использовать таблицы, которые вы пытаетесь запросить. Швы как проблема, так это то, что таблицы не могут быть найдены.

Лучший способ справиться с этим было бы предоставить permssions пользователей ко всем объектам в этой базе данных:

GRANT SELECT, INSERT, DELETE <any other permissions that user needs> ON `database`.`*` TO `user`@`localhost` IDENTIFIED BY 'password' 
+0

У меня есть полные разрешения для каждого объекта в базе данных. –

+0

Как раз примечание, команда GRANT выше применима к MySQL, исходный вопрос плаката связан с MSSQL. –

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