Maybe it's unique to my FreeTDS configuration, but if I don't call mssql_free_statement() after every stored procedure (i.e. mssql_init, mssql_bind, mssql_execute, mssql_fetch_array), all subsequent stored procedures on the same database connection will fail.
I only mention it because this man-page deprecates the use of mssql_free_statement(), saying it's only there for run-time memory concerns. At least in my case, it's also a crucial step in the process of running a stored procedure. If anyone else has problems running multiple stored procedures on the same connection, I hope this helps them out.
mssql_free_statement
(PHP 4 >= 4.3.2, PHP 5, PECL odbtp >= 1.1.1)
mssql_free_statement — ステートメントのメモリを開放する
説明
bool mssql_free_statement
( resource
$stmt
)mssql_free_statement() をコールする必要があるのは、 スクリプトの実行中に大量のメモリを使用することが気になる場合のみです。 すべてのステートメントメモリはスクリプトが終了する際に自動的に開放 されます。ステートメント ID を引数に指定して mssql_free_statement() をコールすることで、 関連付けられたステートメントのメモリが開放されます。
返り値
成功した場合に TRUE を、失敗した場合に FALSE を返します。
例
例1 mssql_free_statement() の例
<?php
// 新しいステートメントを作成します
$stmt = mssql_init('test');
// ここで値をバインドし、ステートメントを実行します
// 処理を終えたら、次のように
// mssql_free_statement をコールしてメモリ上から削除します
mssql_free_statement($stmt);
?>
参考
- mssql_bind() - ストアドプロシージャまたはリモートストアドプロシージャへパラメータを追加する
- mssql_execute() - MS SQL サーバーデータベースでストアドプロシージャを実行する
- mssql_init() - ストアドプロシージャまたはリモートのストアドプロシージャを初期化する
- mssql_free_result() - 結果保持用メモリを解放する
mitch at 1800radiator dot kom ¶
8 years ago
