sqlsrv_free_stmt

Frees all resources for the specified statement

&reftitle.description; `bool` `sqlsrv_free_stmt` `resource` `stmt`

Frees all resources for the specified statement. The statement cannot be used after `sqlsrv_free_stmt` has been called on it. If `sqlsrv_free_stmt` is called on an in-progress statement that alters server state, statement execution is terminated and the statement is rolled back.

&reftitle.parameters;

`stmt`

- The statement for which resources are freed. Note that &null; is a valid parameter value. This allows the function to be called multiple times in a script.

&reftitle.returnvalues;

&return.success;

&reftitle.examples;

### `sqlsrv_free_stmt` example

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    $stmt = sqlsrv_query( $conn, "SELECT * FROM Table_1");
    if( $stmt === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    /*-------------------------------
         Process query results here.
    -------------------------------*/

    /* Free the statement resources. */
    sqlsrv_free_stmt( $stmt);

    ?>

&reftitle.notes;

The main difference between `sqlsrv_free_stmt` and `sqlsrv_cancel` is that a statement resource cancelled with `sqlsrv_cancel` can be re-executed if it was created with `sqlsrv_prepare`. A statement resource cancelled with `sqlsrv_free_statement` cannot be re-executed.

&reftitle.seealso;

- `sqlsrv_cancel`