MySQLi Procedural Functions - GeeksforGeeks

28 Jan, 2022
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:  
Prepared statements are highly efficient specially to avoid SQL injection attacks.The prepared statements are used repeatedly. It also reduces parsing time and overheads as the preparation of query is done only once.The database parses, compiles, optimizes the query statement and stores the result.Binding parameters with the query minimizes overall bandwidth as the parameters are sent whenever required, instead of sending the whole query.Binding parameters with placeholders are safer and easier as the proper formatting is automatically done.By sending the placeholder values to MySQL Server, it follows the client-server protocol.It executes a particular query statement multiple times with different set of variables effectively reducing the cost.It also saves on data copying and conversion.Prepared statements are less prone to errors as the statement is parsed at first and then the parsed values are used by the server.
Prepared statements are highly efficient specially to avoid SQL injection attacks.
The prepared statements are used repeatedly. It also reduces parsing time and overheads as the preparation of query is done only once.
The database parses, compiles, optimizes the query statement and stores the result.
Binding parameters with the query minimizes overall bandwidth as the parameters are sent whenever required, instead of sending the whole query.
Binding parameters with placeholders are safer and easier as the proper formatting is automatically done.
By sending the placeholder values to MySQL Server, it follows the client-server protocol.
It executes a particular query statement multiple times with different set of variables effectively reducing the cost.
It also saves on data copying and conversion.
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
<?php// Database configuration$host  = "localhost";$dbuser = "root";$dbpass = "";$dbname = "GFG"; // Create database connectionmysqli_connect($host, $dbuser, $dbpass, $dbname);  // Check connectionif(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
<?php// Database configuration$host  = "localhost";$dbuser = "root";$dbpass = "";$dbname = "GFG"; // Create database connectionmysqli_connect($host, $dbuser, $dbpass, $dbname);  // Check connectionif(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
<?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_TEST4. mysqli_debug(): Every web developer needs to refer to log files to start troubleshooting for improving the application performance. The above mySQLi function is used in the code for all debugging purposes.  
php
<?php//create a trace file in the localhostmysqli_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
<?php// Database configuration$host  = "localhost";$dbuser = "root";$dbpass = "";$dbname = "GFG"; // Create database connection$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);//some php codeif(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
<?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
<?php// Database configuration$host  = "localhost";$dbuser = "root";$dbpass = "";$dbname = "GFG"; // Create database connection$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname);  // performs the insert querymysqli_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
<?php// Database configuration$host  = "localhost";$dbuser = "root";$dbpass = "";$dbname = "GFG"; // Create database connection$conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); // Set autocommit to offmysqli_autocommit($conn,FALSE);  // performs the insert querymysqli_query($conn,"INSERT INTO items_info (item_name, description)                    VALUES ('Shoes', 'Adidas Brand')"); echo "Inserted successfully";// Commit transactionmysqli_commit($conn); // Rollback transactionmysqli_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
<?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 ifmysqli_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
<?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
<?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 setmysqli_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
<?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 setmysqli_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
<?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 ifmysqli_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
<?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 ifmysqli_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
<?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 querymysqli_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
<?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
<?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
<?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 queryif (!mysqli_query($conn,$query))  {  echo("Error occurred : " . mysqli_error($conn));  } ?>
19. mysqli_autocommit(): This above MySQLi function is used in turning ON/OFF auto-committing database changes or operations.  
php
<?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 querymysqli_query($conn,"INSERT INTO items_info (item_name, description)                    VALUES ('Clock', 'Wall clock for the living room')");//Commit the query transactionmysqli_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
<?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 queryif (!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
<?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
<?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 databasemysqli_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
<?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
<?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 
 
sagar0719kumar
saurabh1990aror
mysql
SQLmysql
SQL
SQL
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
How to Update Multiple Columns in Single Update Statement in SQL?
What is Temporary Table in SQL?
SQL Query to Find the Name of a Person Whose Name Starts with Specific Letter
SQL using Python
SQL | Subquery
How to Write a SQL Query For a Specific Date Range and Date Time?
SQL Query to Convert VARCHAR to INT
SQL Query to Delete Duplicate Rows
SQL indexes
SQL Query to Compare Two Dates