- PHP Basics
- Learn PHP
- PHP Comments
- PHP Data Types
- PHP Variables
- PHP Operators
- PHP echo
- PHP print
- PHP echo vs. print
- PHP if else
- PHP switch
- PHP for Loop
- PHP while Loop
- PHP do...while Loop
- PHP foreach Loop
- PHP break and continue
- PHP Arrays
- PHP print_r()
- PHP unset()
- PHP Strings
- PHP Functions
- PHP File Handling
- PHP File Handling
- PHP Open File
- PHP Create a File
- PHP Write to File
- PHP Read File
- PHP feof()
- PHP fgetc()
- PHP fgets()
- PHP Close File
- PHP Delete File
- PHP Append to File
- PHP Copy File
- PHP file_get_contents()
- PHP file_put_contents()
- PHP file_exists()
- PHP filesize()
- PHP Rename File
- PHP fseek()
- PHP ftell()
- PHP rewind()
- PHP disk_free_space()
- PHP disk_total_space()
- PHP Create Directory
- PHP Remove Directory
- PHP Get Files/Directories
- PHP Get filename
- PHP Get Path
- PHP filemtime()
- PHP file()
- PHP include()
- PHP require()
- PHP include() vs. require()
- PHP and MySQLi
- PHP and MySQLi
- PHP MySQLi Setup
- PHP MySQLi Create DB
- PHP MySQLi Create Table
- PHP MySQLi Connect to DB
- PHP MySQLi Insert Record
- PHP MySQLi Update Record
- PHP MySQLi Fetch Record
- PHP MySQLi Delete Record
- PHP MySQLi SignUp Page
- PHP MySQLi LogIn Page
- PHP MySQLi Store User Data
- PHP MySQLi Close Connection
- PHP Misc Topics
- PHP Object Oriented
- PHP new Keyword
- PHP Cookies
- PHP Sessions
- PHP Date and Time
- PHP GET vs. POST
- PHP File Upload
- PHP Image Processing
PHP free_result() and mysqli_free_result()
This article is created to cover two functions of PHP, that are:
- free_result()
- mysqli_free_result()
Both functions are used to free the stored result memory. The only difference is, the free_result() is used with PHP MySQLi object-oriented script, whereas the mysqli_free_result() is used with PHP MySQLi procedural script.
PHP free_result()
The PHP free_result() function frees the stored result memory, for the specified/given statement handle, in PHP MySQLi object-oriented style. For example:
<?php $server = "localhost"; $user = "root"; $pass = ""; $db = "fresherearth"; $conn = new mysqli($server, $user, $pass, $db); if($conn -> connect_errno) { echo "Database connection failed!<BR>"; echo "Reason: ", $conn -> connect_error; exit(); } $sql = "SELECT name, age FROM customer"; $result = $conn -> query($sql); if($result) { while($row = $result -> fetch_row()) { echo "Name: ", $row[0]; echo "<BR>"; echo "Age: ", $row[1]; echo "<HR>"; } $result -> free_result(); } else { echo "Something went wrong!<BR>"; echo "Error Description: ", $conn -> error; } $conn -> close(); ?>
The output produced by above PHP example on free_result() is shown in the snapshot given below:
Note - The mysqli() is used to open a connection to the MySQL database server, in object-oriented style.
Note - The new keyword is used to create a new object.
Note - The connect_errno is used to get/return the error code (if any) from last connect call, in object-oriented style.
Note - The connect_error is used to get the error description (if any) from last connection, in object-oriented style.
Note - The query() is used to perform query on the MySQL database, in object-oriented style.
Note - The fetch_row() is used to to fetch and return the result as an enumerated array, in object-oriented style.
Note - The error is used to return the description of error (if any), by the most recent function call, in object-oriented style.
Note - The close() is used to close an opened connection, in object-oriented style.
The above example can also be written as:
<?php $conn = new mysqli("localhost", "root", "", "fresherearth"); if(!$conn -> connect_errno) { $sql = "SELECT name, age FROM customer"; if($result = $conn -> query($sql)) { while($row = $result -> fetch_row()) { echo "Name: ", $row[0]; echo "<BR>"; echo "Age: ", $row[1]; echo "<HR>"; } $result -> free_result(); } } $conn -> close(); ?>
Since the free_result() is used to free the stored result from the memory, therefore the question is,
what if we use free_result() before retrieving all the rows ?
Let's find out the answer using the
example given below:
<?php $conn = new mysqli("localhost", "root", "", "fresherearth"); if(!$conn -> connect_errno) { $sql = "SELECT name, age FROM customer"; if($result = $conn -> query($sql)) { while($row = $result -> fetch_row()) { echo "Name: ", $row[0]; echo "<BR>"; echo "Age: ", $row[1]; echo "<HR>"; $result -> free_result(); } } } $conn -> close(); ?>
Note the free_result() inside the while loop. Now the output should be:
That is, after using the free_result() associated with $result, the stored result has been freed, therefore we can not fetch and get further row from the database.
PHP mysqli_free_result()
The PHP mysqli_free_result() function frees the stored result memory, for the specified/given statement handle, in PHP MySQLi procedural style. For example:
<?php $conn = mysqli_connect("localhost", "root", "", "fresherearth"); if(!mysqli_connect_errno()) { $sql = "SELECT name, age FROM customer"; if($result = mysqli_query($conn, $sql)) { while($row = mysqli_fetch_row($result)) { echo "Name: ", $row[0]; echo "<BR>"; echo "Age: ", $row[1]; echo "<HR>"; } mysqli_free_result($result); } } mysqli_close($conn); ?>
Note - The mysqli_connect() is used to open a connection to the MySQL database server, in procedural style.
Note - The mysqli_connect_errno() is used to get/return the error code (if any) from last connect call, in procedural style.
Note - The mysqli_query() is used to perform query on the MySQL database, in procedural style.
Note - The mysqli_fetch_row() is used to to fetch and return the result as an enumerated array, in procedural style.
Note - The mysqli_free_result() is used to free the stored result, in procedural style.
Note - The mysqli_close() is used to close an opened connection to the MySQL database, in procedural style.
« Previous Tutorial Next Tutorial »