• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mysqli_result::free()

    mysqli_result::close

    mysqli_result::free_result

    (PHP 5, PHP 7)

    Frees the memory associated with a result

    说明

    面向对象风格
    mysqli_result::free(void): void
    mysqli_result::close(void): void
    mysqli_result::free_result(void): void
    过程化风格
    mysqli_free_result(mysqli_result$result): void

    Frees the memory associated with the result.

    Note:

    You should always free your result with mysqli_free_result(), when your result object is not needed anymore.

    参数

    $result

    仅以过程化样式:由mysqli_query(),mysqli_store_result()或mysqli_use_result()返回的结果集标识。

    返回值

    没有返回值。

    参见

    • mysqli_query() 对数据库执行一次查询
    • mysqli_stmt_store_result() Transfers a result set from a prepared statement
    • mysqli_store_result() 转移上一次查询返回的结果集
    • mysqli_use_result() Initiate a result set retrieval
    If you are STILL getting this error, even after freeing your results:
    Internal SQL Bug: 2014, Commands out of sync; you can't run this command now
    You may have a stored procedure in your query.  A procedure can return more than one result set, and it will always return one extra empty result set that carries some meta information on the procedure call itself, especially error information. ( source: https://bugs.mysql.com/bug.php?id=71044 )
    While calling single procedures, with one SELECT in them, using mysqli->query("CALL `stored_procedure`();"), I had to do the following to make it work between two calls:
    <?php
    $result->free();
    $mysqli->next_result();
    ?>
    It has no negative impact if you are not calling a stored procedure.
    If you are getting this error:
    Internal SQL Bug: 2014, Commands out of sync; you can't run this command now
    Then you never called mysqli_result::free(), mysqli_result::free_result(), mysqli_result::close(), or mysqli_free_result() in your script, and must call it before executing another stored procedure.
    Freeing the memory associated with a result means that the references returned by mysqli_fetch_object (or equivalent) are cleared. Thus if you should pass an object pointing to a database row _by reference_, every call of mysqli_free_result will discard the referenced data.