Skip to content
Related Articles

Related Articles

MySQLi Procedural Functions
  • Last Updated : 26 Nov, 2019
GeeksforGeeks - Summer Carnival Banner

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.




<?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.";
}
?>

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 .




<?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.";
}
?>

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




<?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);
?>

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.




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

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.






<?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.";
?>

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.




<?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();
?>

Output:

New record inserted successfully 

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




<?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);
?>

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.




<?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);
?>

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.




<?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);
?>

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.




<?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);
?>

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.




<?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);
?>

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.




<?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);
?>

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.




<?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);
?>

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.




<?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);
?>

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.




<?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);
?>

Output:

Total affected rows : 8 

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




<?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);
?>

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.




<?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);
?>

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.




<?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));
  }
  
?>

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




<?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);
?>

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




<?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));
  }
  
?>

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.




<?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);
?>

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




<?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);
?>

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 .




<?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);
?>

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.




<?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);
?>

Output:

One record added successfully 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :