$stmt->close() vs $stmt->free_result()

前端 未结 2 554
刺人心
刺人心 2020-12-24 13:08

I am trying to clarify the difference between $stmt->close() and $stmt->free_result() when finalizing a prepared mysqli st

相关标签:
2条回答
  • 2020-12-24 13:42

    PHP will end your connection and free the resource after it finishes running;

    mysqli::close Closes a prepared statement.

    Since the number of total connections available is limited, freeing the resource the second you're done with it is a good practice.

    And

    mysqli_stmt::free_result Frees stored result memory for the given statement handle.

    it's good practice to free explicitly the resource when you don't need them anymore. it might avoid make a heavy load into the server when many requests are made at the same time.

    Both aren't never strictly necessary to invoke, and is a good practice the use of both.

    0 讨论(0)
  • 2020-12-24 13:48

    $stmt->free_result() frees up memory related to a result set, whereas $stmt->close() frees up memory related to a prepared statement. Subsequently calling $stmt->close() will cancel any result still remaining.

    In essence, calling $stmt->close() will provide the same effect as calling $stmt->free_result() since it cancels the result set as well. But calling $stmt->free_result() will not clear out the memory used by the prepared statement in which case you must use $stmt->close().

    As far as which one to use goes - there may be situations where you intend on using the prepared statement you have initialized, but are no longer in need of the result set you currently have. In such a case you would wait on calling $stmt->close() until you are done with the prepared statement and instead call $stmt->free_result() before executing another statement.

    0 讨论(0)
提交回复
热议问题