我的PHP類多行批處理命令創建以下命令:在PHP創建不承認我的聲明的變量
INSERT INTO contacts (firstName, lastName) VALUES ('jon', 'snow')
DECLARE @IDcontacts VARCHAR(200)
SET @IDcontacts = @@IDENTITY;
INSERT INTO emailAddresses (ownerId, emailAddress) VALUES (@IDcontacts, '[email protected]')
INSERT INTO emailAddresses (ownerId, emailAddress) VALUES (@IDcontacts, '[email protected]')
INSERT INTO emailAddresses (ownerId, emailAddress) VALUES (@IDcontacts, '[email protected]')
我創建連接,開始一個事務,並與sqlsrv_query()
執行批處理。
執行批處理後,sqlsrv_errors()
給了我四個錯誤:[Microsoft][SQL Native Client][SQL Server]Must declare the scalar variable "@IDcontacts".
但是,如果我在SQL Server Management Studio中使用完全相同的同一批次的字符串,它工作正常,所有四個記錄插入正確的標識值從第一次插入。
我正在使用SQL Server Express 2005,php版本5.4.3和最新的sqlsrv驅動程序。在technet或ms論壇上,我一直沒有找到任何有關這方面的信息,任何幫助將不勝感激。
您應該使用SCOPE_IDENTITY()而不是@@ IDENTITY。 –
謝謝,但SCOPE_IDENTITY()和刪除分號給出了相同的結果。仍然在管理服務器上工作,但在PHP中運行時返回相同的錯誤。 – Beartums
@Beartums:我的評論只是一個評論,而不是一個答案。我將使用存儲過程來執行這些INSERT。 –