Witam

Mam pewien poważny problem z PHP + MSSQL 2005 Express + IIS 6.0 (Windows 2003 Server).
Uzyskuje połączenie z bazą danych bez problemu, SELECTy działają aż miło, ale mam pewien problem
z INSERTAMI (na UPDATEach nie testowałem).

W czym tkwi problem (taki oto kod, bardzo prosty):

  1. <?php
  2.  
  3. $query = "
  4. INSERT INTO [dbo].[testowa_tabela](nazwa) VALUES('to jest nowa nazwa'); 
  5. DECLARE @id INT;
  6. SET @id = @@IDENTITY;
  7. SELECT @id;
  8. ";
  9.  
  10. $result = mssql_query($query, $conn);
  11. var_dump(mssql_fetch_assoc($result));
  12.  
  13. ?>


Działa do pewnego czasu smile.gif Otóż otrzymuje id (kolejne z identity, zawsze o jeden większe), ale kiedy wchodze przez SQL Server Management Studio 2005 i wyświetlam dane z jego poziomu w bazie danych nie ma takiego rekordu.
Sprawdzałem uprawnienia SQLa, przeglądałem logi, testowałem na innych tabelach zawsze jest to samo. Wygląda to tak jakby ta informacja była przechowywana w jakimś tempie, ale fizycznie nie trafia do właściwej tabeli.

Co ciekawe zmiana kodu na:

  1. <?php
  2.  
  3. $query = "
  4. INSERT INTO [dbo].[testowa_tabela](nazwa) VALUES('to jest nowa nazwa'); 
  5. DECLARE @id INT;
  6. SET @id = @@IDENTITY;
  7. SELECT * FROM [dbo].[testowa_tabela] WHERE id = @id;
  8. ";
  9.  
  10. $result = mssql_query($query, $conn);
  11. var_dump(mssql_fetch_assoc($result));
  12.  
  13. ?>


Zwraca prawidłowe dane, ale tylko w trakcie trwania tego połączenia, jeśli zmienie @id na właściwe id rekordu i odpale skrypt ponownie dostaje pięknego nulla w wyniku winksmiley.jpg.

A żeby nie zapomnieć jeśli wywołuje dokładnie to samo zapytanie z poziomu SQL Server Management Studio 2005 wszystko jest ok, rekord dodawany jest do właściwej tabeli.

Czy miał ktoś podobny problem, lub zna jakieś rozwiązanie powyższej sytuacji?

Pozdrawiam
PhoeniX