MySQLi Procedural Functions

MySQLi (MySQL Improved) provides procedural and object oriented interface to data and its management. The i extension MySQL functions allows the user to access its database servers. The MySQL improved extension is specially designed to work with MySQL version 4.1.13 and new versions.

Advantages of using prepared statements:

  1. Prepared statements are highly efficient specially to avoid SQL injection attacks.
  2. The prepared statements are used repeatedly. It also reduces parsing time and overheads as the preparation of query is done only once.
  3. The database parses, compiles, optimizes the query statement and stores the result.
  4. Binding parameters with the query minimizes overall bandwidth as the parameters are sent whenever required, instead of sending the whole query.
  5. Binding parameters with placeholders are safer and easier as the proper formatting is automatically done.
  6. By sending the placeholder values to MySQL Server, it follows the client-server protocol.
  7. It executes a particular query statement multiple times with different set of variables effectively reducing the cost.
  8. It also saves on data copying and conversion.
  9. Prepared statements are less prone to errors as the statement is parsed at first and then the parsed values are used by the server.

We cannot cover everything under this topic, but let us look into some of the important procedural functions
of MySQLi .



1. mysqli_connect():
As you know, before doing any database related operations, you need to establish a connection to the MySQL database server. If the connection is established successfully, then it returns a database connection resource identifier. If the connection encounters failure, then it just throws an error.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
mysqli_connect($host, $dbuser, $dbpass, $dbname);
   
// Check connection
if(mysqli_connect_error())
{
 echo "Connection establishing failed!";
}
else
{
 echo "Connection established successfully.";
}
?>

chevron_right


Output:

Connection established successfully. 

2. mysqli_connect_error():
The MySQLi function throws an error when the connection is not made successfully and the function stores the error in previous call to mysqli_connect(). If no error is encountered , it returns NULL. If any error is encountered , then it returns an error message.

Note:

  • To test mysqli_connect_error(), stop the MySQL server in XAMPP control panel and then call the above PHP code having mysqli_connect().
  • If display_errors are enabled in PHP configuration, you can see an error of mysqli_connect_error() which returns the following message.
Connection failed as the target machine actively refused it. 

Note:
In good programming practice , its better NOT to show any error messages. For troubleshooting purpose, use mysqli_connect_error() to log the error as mentioned in the below code .

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
mysqli_connect($host, $dbuser, $dbpass, $dbname);
   
// Check connection
if(mysqli_connect_error())
{
 echo "Connection establishing failed!";
}
else
{
 echo "Connection established successfully.";
}
?>

chevron_right


3. mysqli_select_db():
This mySQLi function is used to change the default database for making a connection.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
$dbtest = "GFG_TEST";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
   
//write some code for database "GFG"
  
// Change database to "GFG_TEST"
 mysqli_select_db($conn,$dbtest);
  
// PHP code for database "GFG_TEST"...
  
mysqli_close($conn);
?>

chevron_right


Result:
This will change the current database to GFG_TEST

4. mysqli_debug():
Every web developer needs to refer to log files to start troubleshooting for improving the application peformance. The above mySQLi function is used in the code for all debugging purposes.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
//create a trace file in the localhost
mysqli_debug("d:t:o,/temp/client.trace");
?>

chevron_right


Note:
The user should compile the MySQL client library to make use of the above function to support debugging. This function on success will return TRUE.

5. mysqli_close():
This MySQLi function is used to close a previously connected database. This function will return TRUE on successful closing, otherwise it will return FALSE.


filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
//some php code
if(mysqli_close($conn))
echo "Connection closed successfully.";
?>

chevron_right


Output:

Connection closed successfully. 

6. mysqli_prepare():
The above MySQLi function is used to prepare a MySQL query for execution. It returns a statement object for further operations and returns FALSE if some error occurs.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
   
// prepare the mysql query statement and bind parameters
$query = mysqli_prepare("INSERT INTO items_info (item_name, description) 
                                VALUES (?, ?)");
$query->bind_param("ss", $itemname, $description);
  
// set parameters and execute
$itemname = "Shampoo";
$description = "Hairfall preventing protein shampoo";
  
$query->execute();
echo "New record inserted successfully";
mysqli_close();
?>

chevron_right


Output:

New record inserted successfully 

7. mysqli_query():
This MySQLi function performs or executes the query on the given database.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
   
// performs the insert query
mysqli_query($conn,"INSERT INTO items_info (item_name, description) 
                    VALUES ('Nailpolish', 'Colorbar Pink one')");
  
echo "Inserted successfully";
mysqli_close($conn);
?>

chevron_right


Output:

Inserted successfully 

8. mysqli_rollback():
The mysqli function rollsback the current transaction for the given database connection. Turn OFF the auto-commit, execute the query, then again commit the query and then rollback the current
transaction.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
  
// Set autocommit to off
mysqli_autocommit($conn,FALSE);
   
// performs the insert query
mysqli_query($conn,"INSERT INTO items_info (item_name, description) 
                    VALUES ('Shoes', 'Adidas Brand')");
  
echo "Inserted successfully";
// Commit transaction
mysqli_commit($conn);
  
// Rollback transaction
mysqli_rollback($conn);
mysqli_close($conn);
?>

chevron_right


9. mysqli_fetch_row():
The above MySQLi function is used to fetch one row from the result-set as an enumerated array. Each call to the above function will return the next row from the result set. If no rows are fetched, then it returns FALSE.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
$query = "SELECT item_name,description from items_info";
  
if ($result=mysqli_query($conn,$query))
{
  // Fetch one and one row
  while ($row=mysqli_fetch_row($result))
    {
        echo " Item name :".$row[0]." , ";
        echo " Description : ".$row[1];
        echo  nl2br (" \n ");
    }//end while
  // Free result set
  mysqli_free_result($result);
}// end if
mysqli_close($conn);
?>

chevron_right


Result:
It will show all the rows with Item name , Description

10. mysqli_field_count():
The above MySQLi function is used to return the number of columns for the most recent query. It returns total number of columns in the result set.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
$query = "SELECT * from items_info";
mysqli_query($conn,$query);
$total_columns = mysqli_field_count($conn);
echo $total_columns;
mysqli_close($conn);
?>

chevron_right


Output:


4 

11. mysqli_fetch_array():
The above MySQLi function is used to fetch a row as an associative, numeric array or both types of array from the result set.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
$query = "SELECT item_name,description from items_info";
  
$result=mysqli_query($conn,$query);
// Gets the Numeric array
$row=mysqli_fetch_array($result,MYSQLI_NUM);
echo " Item name :".$row[0];
echo ",";
echo " Description : ".$row[1];
echo  nl2br (" \n ");
// Gets the Associative array
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
echo " Item name :".$row["item_name"];
echo ",";
echo " Description : ".$row["description"];
  
// Free the result set
mysqli_free_result($result);
mysqli_close($conn);
?>

chevron_right


Output:

table array 

12. mysqli_fetch_all():
The MySQLi function fetches all rows and return the result set as an associative array, a numeric array, or both.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
   
$query = "SELECT item_name from items_info";
$result = mysqli_query($conn,$query);
$rowcount=mysqli_num_rows($result);
// Gets the Associative array
$row = mysqli_fetch_all($result,MYSQLI_ASSOC);
print_r($row); 
  
for($i=0;$i<$rowcount;$i++)
{
   echo "<br> ".$row[$i]['item_name'];
}
// Free the result set
mysqli_free_result($result);
mysqli_close($conn);
?>

chevron_right


Note: The above function is only available with MySQL Native Driver.

13. mysqli_free_result():
The above MySQLi function free the memory of the fetched rows of the result set.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
$query = "SELECT item_name,description from items_info";
  
if ($result=mysqli_query($conn,$query))
{
    while ($row=mysqli_fetch_row($result))
    {
        echo " Item name :".$row[0].",";
        echo " Description : ".$row[1];
        echo  nl2br (" \n ");
    }//end while
  // Free result set
  mysqli_free_result($result);
}// end if
mysqli_close($conn);
?>

chevron_right


Output:

Item name :box, Description : square shaped box in red colour 

14. mysqli_num_rows():
The above MySQLi function is used to return the number of rows of the result set.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
   
$query = "SELECT item_name,description from items_info";
if ($result=mysqli_query($conn,$query))
{
  //It returns the total number of rows of the result set
  $rowcount=mysqli_num_rows($result);
    
  echo "Total number of rows of the result :  ".$rowcount;
  // Free result set
  mysqli_free_result($result);
    
}// end if
mysqli_close($conn);
?>

chevron_right


Output:

Total number of rows of the result : 8 

15. mysqli_affected_rows():
The above MySQLi function is used to return the total number of affected rows from the previous MySQL SELECT, INSERT, UPDATE, DELETE or REPLACE query.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
$query = "SELECT * FROM items_info";
   
// performs the query
mysqli_query($conn,$query);
echo "Total affected rows : ".mysqli_affected_rows($conn);
mysqli_close($conn);
?>

chevron_right


Output:


Total affected rows : 8 

16. mysqli_get_server_info():
The above MySQLi function is used to return the MySQL server version.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
echo "The MySQL server version is : ".mysqli_get_server_info($conn);
mysqli_close($conn);
?>

chevron_right


Output:

The MySQL server version is : 5.6.21 

17. mysqli_fetch_fields():
The above MySQLi function returns an array of objects which contains the information of columns of the result set.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
$query = "SELECT item_name,description FROM items_info";
   
if ($result=mysqli_query($conn,$query))
  {
  // Get the fields 
  $fields=mysqli_fetch_fields($result);
  foreach ($fields as $value)
    {
        echo "Column name : ".$value->name."<br> ";
    echo "Table name : ".$value->table."<br> ";
    echo "Maximum length : ".$value->max_length."<br> ";
    echo  nl2br (" \n ");
     }
  // Free result set
  mysqli_free_result($result);
}
  
mysqli_close($conn);
?>

chevron_right


Output:

Column name : item_name
Table name : items_info
Maximum length : 18

Column name : description
Table name : items_info
Maximum length : 35 

18. mysqli_error():
The MySQLi function returns the error message for the last MySQL function call, if any error exists.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
if (mysqli_connect_errno())
  {
  echo "Connection to MySQL server failed : " . mysqli_connect_error();
  }
  
$query = "INSERT INTO items_info (item_name) VALUES ('Jacket')";
// Check for error after performing the query
if (!mysqli_query($conn,$query))
  {
  echo("Error occured : " . mysqli_error($conn));
  }
  
?>

chevron_right


19. mysqli_autocommit():
This above MySQLi function is used in turning ON/OFF auto-committing database changes or operations.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
 // Create database connection
 $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
 mysqli_autocommit($conn,FALSE);
  
// performs the insert query
mysqli_query($conn,"INSERT INTO items_info (item_name, description) 
                    VALUES ('Clock', 'Wall clock for the living room')");
//Commit the query transaction
mysqli_commit($conn);
echo "Inserted successfully";
mysqli_close($conn);
?>

chevron_right


20. mysqli_error_list():
The MySQLi function returns list of error messages for the last MySQL function call, if any error exists.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
   
  if (mysqli_connect_errno())
  {
  echo "Connection to MySQL server failed : " . mysqli_connect_error();
  }
$query = "INSERT INTO items_info (item_name) VALUES ('Jacket')";
// Check for error after performing the query
if (!mysqli_query($conn,$query))
  {
  print_r(mysqli_error_list($conn));
  }
  
?>

chevron_right


21. mysqli_begin_transaction():
The MySQLi function starts a transaction following the MySQL commands. It returns TRUE in case of successful execution, otherwise it returns FALSE.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
$query = "INSERT INTO items_info (item_name, description) 
          VALUES ('Bangles', 'Pink bangles')";
// performs the insert query
  
mysqli_begin_transaction($conn, MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT);
  
mysqli_query($conn,$query);
mysqli_commit($conn);
echo "Inserted successfully";
mysqli_close($conn);
?>

chevron_right


22. mysqli_change_user():
The MySQLi function is used to change the user of given database connection to the new database .

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
$other_dbname = "OTHER_GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
   
// reset to new database
mysqli_change_user($conn, $dbuser,$dbpass, $other_dbname);
if ($result = mysqli_query($conn,"SELECT database()"))
{
    $row = mysqli_fetch_row($result);
    echo "Default database : ".$row[0];
}
  
mysqli_close($conn);
?>

chevron_right


Output:

Default database : OTHER_GFG 

23. mysqli_character_set_name():
The MySQLi function is used to return the default character set selected for the database connection .

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
$characterset = mysqli_character_set_name($conn);
echo "Default character set is: " . $characterset;
  
mysqli_close($conn);
?>

chevron_right


Output:

Default character set is: latin1 

24. mysqli_real_escape_string():
The MySQLi function is used to escape special characters in a string for use in MySQL queries.

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// Database configuration
$host  = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "GFG";
  
// Create database connection
$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);
   
$itemname = "matress's";
$description = "Belongs to Mumbai's mall";
 // escape variables 
$itemname = mysqli_real_escape_string($conn,$itemname);
$description = mysqli_real_escape_string($conn, $description);
  
// performs the insert query
$query = "INSERT INTO items_info (item_name, description) 
          VALUES ('$itemname','$description')";
  
if (!mysqli_query($conn,$query)) {
  die('Error: ' . mysqli_error($conn));
}
echo "One record added successfully";
  
mysqli_close($conn);
?>

chevron_right


Output:

One record added successfully 


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.