2010-06-02 86 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工作得很好,但接下來的兩個查詢失敗了,我找不到原因。這裏是從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

錯誤清楚地圍繞着查詢未執行的事實。在我的數據庫中,我有一個名爲Issues的表和一個名爲ApplicationInfo的表,所以我不確定它爲什麼告訴我他們是無效對象。

+3

這些錯誤是想告訴你,某些表/字段你查詢中的引用無效或不存在。仔細檢查O型。 – 2010-06-02 14:01:12

+0

'ApplicationInfo'不同於'software.software_dbo.ApplicationInfo' – 2010-06-02 14:02:01

+0

查詢*看起來很好(對數據庫結構做了一些假設)。當他們直接從SSMS查詢窗口運行它們時它們是否工作?如果是這樣,那麼這不是查詢本身。 – 2010-06-02 14:05:39

回答

2

檢查要查詢正確的數據庫或模式。

software.software_dbo.ApplicationInfo手段:

  • 名爲software
  • 名爲software_dbo模式數據庫 - 可能這就是問題所在。可能是您的SQL Server上的dbo
  • 命名ApplicationInfo

視圖/表或許檢查什麼的DBO值,其他參數之中,在此聲明:$connect = mssql_connect(DBSERVER, DBO, DBPW)

+0

謝謝。將software_dbo替換爲dbo解決了這個問題。問題 - 爲什麼第一個查詢不需要,而另外兩個呢? – 2010-06-02 14:18:00

0

檢查您正在連接的用戶是否有權使用您嘗試查詢的表。類似問題的接縫是無法找到表格。

來處理這將是授予用戶permssions到該數據庫中的所有對象,最好的辦法:

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

我對數據庫中的每個對象擁有完全權限。 – 2010-06-02 14:09:55

+0

請注意,上面的GRANT命令適用於MySQL,原始海報的問題與MSSQL相關。 – 2014-01-12 14:35:19