("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 — 結果を保持するリソースを開放する
説明
bool odbc_free_result
( resource $result_id
)
結果を保持するリソースを開放します。
odbc_free_result()は、スクリプトのメモリ消費量が 多すぎることが懸念される場合にのみコールする必要があります。 全ての結果保持用メモリは、スクリプト実行が終了した際に自動的に開放されます。
パラメータ
- result_id
-
結果 ID。
返り値
常に TRUE を返します。
注意
注意: 自動コミットが無効(odbc_autocommit() を 参照ください)な時にコミットの前に odbc_free_result() をコールすると、全ての 未解決のトランザクションは、ロールバックされます。
odbc_free_result
rich at kastle dot com
20-Dec-2004 03:48
20-Dec-2004 03:48
rogersd at island dot net
05-Sep-2001 08:03
05-Sep-2001 08:03
odbc_free_result() is also the way to avoid the dreaded "Too many open cursor" error.
