Почему мой запрос SQL Server не выполняется? - PullRequest
0 голосов
/ 02 июня 2010
 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:

Предупреждение: mssql_query () [function.mssql-query]: сообщение: недопустимое имя объекта «Проблемы». (уровень серьезности 16) в /srv/www/htdocs/agreement.php в строке 47

Предупреждение: mssql_query () [function.mssql-query]: общая ошибка SQL Server: проверьте сообщения от SQL Server (уровень серьезности 16) в /srv/www/htdocs/agreement.php в строке 47 Предупреждение: mssql_query () [function.mssql-query]: сбой запроса в /srv/www/htdocs/agreement.php в строке 47

Предупреждение: mssql_fetch_assoc (): предоставленный аргумент не является допустимым ресурсом результатов MS SQL в /srv/www/htdocs/agreement.php в строке 48

Предупреждение: mssql_query () [function.mssql-query]: сообщение: недопустимое имя объекта «software.software_dbo.ApplicationInfo». (уровень серьезности 16) в /srv/www/htdocs/agreement.php в строке 51

Предупреждение: mssql_query () [function.mssql-query]: общая ошибка SQL Server: проверьте сообщения от SQL Server (уровень серьезности 16) в /srv/www/htdocs/agreement.php в строке 51

Предупреждение: mssql_query () [function.mssql-query]: запрос не выполнен в /srv/www/htdocs/agreement.php в строке 51

Предупреждение: mssql_fetch_assoc (): указанный аргумент не является допустимым ресурсом результата MS SQL в /srv/www/htdocs/agreement.php в строке 52

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

Ответы [ 2 ]

2 голосов
/ 02 июня 2010

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

software.software_dbo.ApplicationInfo означает:

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

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

0 голосов
/ 02 июня 2010

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

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

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