uniqueidentifier típus mssql_bind-ben
Sziasztok!
Először használok MSSQL-t és tárolt eljárásokat, kérlek segítsetek.
Adott: ubuntu + php 5.2.12 + freetds 0.82
Szóval megvan az mssql_init. Utána jön a bindelés. Van egy kód nevű bemenet és egy id nevű kimenet. A kimenetről annyit lehet tudni, hogy uniqueidentifier típusú. Nem tudom viszont, hogy ebben az esetben mit írjak a 4 paraméterhez, azaz a típushoz. Próbának beírtam SQLVARCHAR-t, de gyanítom ezért kapok hibaüzenetet (lent).Hibaüzenet:
Szóval lenne pár kérdésem...
1. Mit írjak a 4 paraméterhez típusnak uniqueidentifier mező esetén?
2. Execute után az $id változómnak fel kellene vennie az id mező értékét?
Előre is köszönöm a segítő szavakat!
■ Először használok MSSQL-t és tárolt eljárásokat, kérlek segítsetek.
Adott: ubuntu + php 5.2.12 + freetds 0.82
Szóval megvan az mssql_init. Utána jön a bindelés. Van egy kód nevű bemenet és egy id nevű kimenet. A kimenetről annyit lehet tudni, hogy uniqueidentifier típusú. Nem tudom viszont, hogy ebben az esetben mit írjak a 4 paraméterhez, azaz a típushoz. Próbának beírtam SQLVARCHAR-t, de gyanítom ezért kapok hibaüzenetet (lent).
$stmt = mssql_init('az_eljaras_neve');
$kod = "1212";
$id = "";
mssql_bind($stmt, '@KOD', $kod, SQLVARCHAR, FALSE, FALSE, 20);
mssql_bind($stmt, '@ID', $id, SQLVARCHAR, TRUE, FALSE, 200);
mssql_execute($stmt);
Warning: mssql_execute() [function.mssql-execute]: message: Invalid object name '*******.dbo.******'. (severity 16) in /usr/local/apache2/htdocs/index.php on line 57
Warning: mssql_execute() [function.mssql-execute]: General SQL Server error: Check messages from the SQL Server (severity 16) in /usr/local/apache2/htdocs/index.php on line 57
Warning: mssql_execute() [function.mssql-execute]: message: Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing. Previous count = 0, current count = 1. (severity 16) in /usr/local/apache2/htdocs/index.php on line 57
Warning: mssql_execute() [function.mssql-execute]: General SQL Server error: Check messages from the SQL Server (severity 16) in /usr/local/apache2/htdocs/index.php on line 57
Warning: mssql_execute() [function.mssql-execute]: stored procedure execution failed in /usr/local/apache2/htdocs/index.php on line 57
Warning: mssql_execute() [function.mssql-execute]: General SQL Server error: Check messages from the SQL Server (severity 16) in /usr/local/apache2/htdocs/index.php on line 57
Warning: mssql_execute() [function.mssql-execute]: message: Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing. Previous count = 0, current count = 1. (severity 16) in /usr/local/apache2/htdocs/index.php on line 57
Warning: mssql_execute() [function.mssql-execute]: General SQL Server error: Check messages from the SQL Server (severity 16) in /usr/local/apache2/htdocs/index.php on line 57
Warning: mssql_execute() [function.mssql-execute]: stored procedure execution failed in /usr/local/apache2/htdocs/index.php on line 57
Szóval lenne pár kérdésem...
1. Mit írjak a 4 paraméterhez típusnak uniqueidentifier mező esetén?
2. Execute után az $id változómnak fel kellene vennie az id mező értékét?
Előre is köszönöm a segítő szavakat!
SQLUNIQUE
#define SQLUNIQUE SYBUNIQUE
#endif
Habár nem tudom ez a feltétel mikor lesz igaz, kiszedtem az ifdef-et, de fordításnál hibát kapok (már meg se lepődök):
Kezdek belefáradni, hiba hiba hátán. Van valakinek működő megoldása arra, hogyan lehet egyszerűen elérni/kezelni php-ből mssql-t ubuntu alatt?? (tárolt eljárásokkal dolgoznék főként) Jó ez a FreeTDS csak elég kevés a tutorial hozzá olyan linux hülyéknek, mint én. Köszönöm! Nagyon!
MEGOLDÁS
Nagyon tudom utálni amikor vki kérdez vmit, rájön magától, de a megoldást nem teszi közzé. Szóval sikerült megoldanom a fenti problémát:
Habár FreeTDS-ben valóban van egy SQLUNIQUE típus, én nem igazán tudtam hasznát venni/használni. Viszont! Az uniqueidentidier tulajdonkeppen egy egyszerű 16 bites, bináris adattípus, csak attól hivják uniqueidentifiernek, hogy egy speciális algoritmus generálja. Azaz ha a mssql_bind-ben SQLVARCHAR-nek állítom be, akkor vissza fogom kapni és megy, tényleg! Viszont az első bejegyzésemben is ezt írtam, akkor viszont még nem ment. Egy ismerős azt mondta, hogy az MSSQL szerver vacakolni szokott a titkosított forráskódú tárolt eljárások esetében. Egyszerűen csak újra kellett indítani a szervert és már ment is!
Remélem segítettem valakinek!