PHPWales 2020 - June 3rd to June 4th

mysqli_result::free

mysqli_result::close

mysqli_result::free_result

mysqli_free_result

(PHP 5, PHP 7)

mysqli_result::free -- mysqli_result::close -- mysqli_result::free_result -- mysqli_free_resultFrees the memory associated with a result

Açıklama

Nesne yönelimli kullanım

mysqli_result::free ( void ) : void
mysqli_result::close ( void ) : void
mysqli_result::free_result ( void ) : void

Yordamsal kullanım

mysqli_free_result ( mysqli_result $result ) : void

Frees the memory associated with the result.

Bilginize:

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

Değiştirgeler

sonuç

Sadece yordamsal tarz: mysqli_query(), mysqli_store_result() veya mysqli_use_result() işlevinden dönen bir sonuç kümesi tanıtıcısı.

Dönen Değerler

Hiçbir değer dönmez.

Ayrıca Bakınız

add a note add a note

User Contributed Notes 3 notes

up
5
jack_action100 at hotmail dot example dot com
8 months ago
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.
up
5
Vector at ionisis dot com
9 years ago
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.
up
-13
Anonymous
10 years ago
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.
To Top