("Note: If auto-commit is disabled (see odbc_autocommit()) and you call odbc_free_result() before committing, all pending transactions are rolled back.")
I've looked thru the code, and that note is definitely wrong, at least in my environment (Windows/SQL Server). odbc_free_result ultimately just calls SQLFreeStmt which has NO EFFECT on outstanding transactions.
In fact, it seems it must be wrong for all environments, because the SQLFreeStmt is bound to the destruction of the result resource. So unset($result) would be just as dangerous - and you're randomly and unpredictably screwed if garbage collection reaps the result set before your transaction's done.
odbc_free_result
(PHP 4, PHP 5)
odbc_free_result — Gibt den durch ein Abfrageergebnis belegten Speicher wieder frei
Beschreibung
Gibt immer TRUE zurück.
odbc_free_result() braucht nur aufgerufen zu werden, wenn Sie einen zu hohen Speicherverbrauch durch das aktuell laufende Skript vermeiden wollen. Das gesamte Abfrageergebnis wird automatisch nach Beendigung des Skriptes gelöscht. Aber wenn Sie sicher sind, dass Sie dieses Ergebnis nicht länger benötigen, dann können Sie bei Speicherproblemen die Funktion odbc_free_result() benutzen.
Hinweis: Wenn autocommit deaktiviert ist (siehe odbc_autocommit()) und Sie odbc_free_result() bevor ein Commit gemacht wird, werden alle austehenden Transaktionen zurückgenommen.
odbc_free_result
20-Dec-2004 03:48
05-Sep-2001 08:03
odbc_free_result() is also the way to avoid the dreaded "Too many open cursor" error.
