2009-07-16 105 views
0

以下語句在MS SQL Server管理工作室中運行良好。但是,當我嘗試通過PHP執行插入不會發生,並且不返回錯誤。我知道我的連接是有效的,所有我的選擇語句正確返回。我錯過了什麼?PHP SQL Server插入問題

DECLARE @id bigint; SET @id = (SELECT MAX(application_track_id) + 1 FROM application_track_data); INSERT INTO application_track_data (application_track_id,user_id, action_key, action, ip_address, session_id, application) VALUES (@id,1,'584','login','192.168.37.60','05sn3618p61dvmml6pkefuteg2','akamata'); 

這是我用來執行sql的代碼。

$result = mssql_query($sql); 
if(!$result) 
{ 
print "Error:" . mssql_get_last_message(); 
} 
else 
print "Success"; 

回答

1

你可能想把它放在一個過程中。既然你在你的SQL語句中有多個命令,我相信大多數db驅動程序只能調用單個語句(或單個T-SQL語句)。所以,如果你需要多事情發生把它變成一個存儲過程或執行每個單獨的語句基於返回值等

UPDATE:試試這個:http://us3.php.net/manual/en/function.mssql-next-result.php

我猜它允許多個查詢,但是你需要得到正確的一個。還有一些db庫有一個* _query_multiple函數,但只在mysqli庫或maxdb庫中。

+0

好吧,我把它放在一個存儲過程。現在我收到以下錯誤:將數據類型varchar轉換爲數字時出錯。 SP從Management Studio運行良好。我在表結構中看到的唯一情況是其中一列是bigint。會造成問題嗎? – James 2009-07-16 15:18:47

0

我的猜測是,你正在運行自動提交關閉,而不是提交交易。

0

這種活動確實應該在存儲過程中。更容易管理和更容易從PHP調用。您還需要每次都提交這些更改。

0

單獨嘗試插入語句。如果這有效,那麼你知道有多個語句導致錯誤(並且你需要用存儲過程替換你的查詢)。如果失敗,那麼jsight是正確的,這是自動提交的問題。

就我個人而言,我會用多條語句來下注賭注,但是這應該給你一條確定根本原因的路線(這可能是一個問題)。

+0

如果我自己運行插入語句。 「我將數據類型varchar轉換爲數字時出錯」。如果我減少插入語句到唯一的必填字段,我仍然得到錯誤。 bigint數據類型會導致問題嗎? – James 2009-07-16 14:32:14