PHP | mysqli_get_warnings() Function

PHP mysqli_get_warnings() Function


Hello folks! welcome back to a new edition of our tutorial on PHP. In this tutorial guide, we are going to be studying about the PHP mysqli_get_warnings() Function.

The built-in mysqli_get_warnings() function in PHP returns the errors generated by the last executed query, in form of an array.

Syntax

Following below is the syntax to use this function -

mysqli_get_warnings($con)


Parameter Details

Sr.NoParameter & Description
1

con(Mandatory)

This is an object representing a connection to MySQL Server.


Return Value

This built-in PHP function returns an array containing the warnings generated during the execution of the last query.

PHP Version

This PHP function was first introduced in PHP version 5 and it works in all the later versions.

Example1

Assume we have created a table named Emp as follows -

CREATE TABLE EMP(
   ID TINYINT,
   First_Name VARCHAR(50) Not NULL, 
   Last_Name VARCHAR(10) Not NULL, 
   Date_Of_Birth date, 
   Salary Int(255)
);

The following example demonstrates the usage of the PHP mysqli_get_warnings() function (in procedural style) -

<?php
   //Creating a connection
   $con = mysqli_connect("localhost", "root", "password", "mydb");

   //Inserting a record into the employee table
   $sql = "INSERT IGNORE into emp values(1, 'Kennedy', NULL, DATE('1993-04-05'), 2566)";
   mysqli_query($con, $sql);
   //Warnings
   $warnings = mysqli_get_warnings($con);
   print("Warning(s): "."\n");
   print_r($warnings);

   $sql = "INSERT IGNORE into emp values (15, 'Precious', 'Amah', DATE('1995-02-22'), 9986), (15, NULL, 'Prince', DATE('1993-11-25'), 9986)";
   mysqli_query($con, $sql);
   //Warnings
   $warnings = mysqli_get_warnings($con);
   print("\n"."Warning(s): ");
   print_r($warnings);

   //Closing the connection
   mysqli_close($con);

?>

Output

When the above code is executed, it will produce the following result -

Warning(s):
mysqli_warning Object
(
    [message] => Column 'Last_Name' cannot be null
    [sqlstate] => HY000
    [errno] => 1048
)

Warning(s): mysqli_warning Object
(
    [message] => Data truncated for column 'Last_Name' at row 1
    [sqlstate] => HY000
    [errno] => 1265
)

Example2

Following is another example of the PHP mysqli_get_warnings() function -

<?php
   //Creating a connection
   $con = mysqli_connect("localhost", "root", "password", "mydb");

   //Query to DROP an unknown table
   mysqli_query($con, "drop table if exists WrongTable");
   print("\n"."Warning(s): "."\n");
   print_r(mysqli_get_warnings($con));

   //Closing the connection
   mysqli_close($con);
?>

Output

When the above code is executed, it will produce the following result -

Warning(s):
mysqli_warning Object
(
    [message] => Unknown table 'mydb.wrongtable'
    [sqlstate] => HY000
    [errno] => 1051
)

Example3

You can also retrieve warnings one by one by making use of the next() function of the mysqli_warning class as follows $minus;

<?php
   //Creating a connection
   $con = new mysqli("localhost", "root", "password", "mydb");

   //Inserting a record into the employee table
   $con -> query("INSERT IGNORE into emp values(105, NULL, 'Kennedy', DATE('1993-04-05'), 2566)");

   if($con->warning_count){
      $w = mysqli_get_warnings($con);
      do {
         echo "Warning: $w->errno: $w->message\n";
      } while ($w->next());
   }

   //Closing the connection
   $con -> close();
?>

Output

When the above code is executed, it will produce the following result below -

Warning: 1048: Column 'First_Name' cannot be null
Warning: 1265: Data truncated for column 'Last_Name' at row 1

Example4

You can try the following example below -

<?php
   $servername = "localhost";
   $username = "root";
   $password = "password";
   $dbname = "mydb";
   $conn = new mysqli($servername, $username, $password, $dbname);

   if (!$conn->real_connect($servername, $username, $password, $dbname)) {
      die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
   }
   print("Database connected" ."\n");
   mysqli_query($conn, "CREATE TABLE sample (ID INT, Name VARCHAR(20))");
   $query = "INSERT IGNORE INTO sample (id,name) VALUES(
      1,'Nkpara Kennedy Chinaza')";

   mysqli_query($conn, $query);
   $count = mysqli_warning_count($conn);
   print("No.Of warnings in the query:".$count."\n");

   if ($count) {
      $warnings = mysqli_get_warnings($conn);
	  print_r($warnings);
   }
   mysqli_close($conn);
   
?>

Output

When the above code is executed, if you verify the contents of the table test, you can see the inserted records as shown below -

Database connected
No.Of warnings in the query:1
mysqli_warning Object
(
    [message] => Data truncated for column 'Name' at row 1
    [sqlstate] => HY000
    [errno] => 1265
)


Alright guys! This is where we are going to be rounding up for this tutorial post. In our next tutorial, we are going to be discussing about the PHP mysqli_info() Function.

Do feel free to ask your questions where necessary and we will attend to them as soon as possible. If this tutorial was helpful to you, you can use the share button to share this tutorial.

Do follow us on our various social media handles available and also subscribe to our newsletter to get our tutorial posts delivered directly to your emails.

Thanks for reading and bye for now.