为什么我的SQL Server查询失败?

时间:2010-06-02 13:58:31

标签: php sql sql-server sqlconnection

 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]:message:无效的对象名称'Issues'。第47行/srv/www/htdocs/agreement.php中的(严重级16)

     

警告:mssql_query()[function.mssql-query]:常规SQL Server错误:在第47行的/srv/www/htdocs/agreement.php中检查来自SQL Server的消息(严重级16)   警告:mssql_query()[function.mssql-query]:第47行/srv/www/htdocs/agreement.php中的查询失败

     

警告:mssql_fetch_assoc():提供的参数不是第48行/srv/www/htdocs/agreement.php中的有效MS SQL结果资源

     

警告:mssql_query()[function.mssql-query]:message:无效的对象名称'software.software_dbo.ApplicationInfo'。第51行/srv/www/htdocs/agreement.php中的(严重级16)

     

警告:mssql_query()[function.mssql-query]:常规SQL Server错误:在第51行的/srv/www/htdocs/agreement.php中检查来自SQL Server的消息(严重级16)

     

警告:mssql_query()[function.mssql-query]:第51行/srv/www/htdocs/agreement.php中的查询失败

     

警告:mssql_fetch_assoc():提供的参数不是第52行/srv/www/htdocs/agreement.php中的有效MS SQL结果资源

错误显然是查询未执行的事实。在我的数据库中,我有一个名为Issues的表和一个名为ApplicationInfo的表,所以我不确定它为什么告诉我它们是无效的对象。

2 个答案:

答案 0 :(得分:2)

检查您是否正在查询正确的数据库或架构。

software.software_dbo.ApplicationInfo表示:

  • 名为software
  • 的数据库
  • 名为software_dbo的模式 - 可能是问题。可能是SQL Server上的dbo
  • 名为ApplicationInfo
  • 的视图/表格

也许在本声明中检查DBO的值是什么,$connect = mssql_connect(DBSERVER, DBO, DBPW)

答案 1 :(得分:0)

检查您要连接的用户是否有权使用您尝试查询的表。像问题的接缝是无法找到表格。

处理此问题的最佳方法是将用户权限授予该数据库中的所有对象:

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