PHP | mysqli_warning_count() Function

PHP mysqli_warning_count() 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_warning_count() Function.

The built-in PHP mysqli_warning_count() function counts the number of errors that was generated by the last executed query and, returns the result.

Syntax

Following below is the syntax to use this function -

mysqli_warning_count($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 integer value representing the number of warnings generated during the execution of the last query. If there are no warnings during the last execution, this built-in function returns 0.

PHP Version

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

Example1

Assuming 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 below is an example which demonstrates the usage of the built-in PHP mysqli_warning_count() function (in a 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);
   //Number of Warnings
   $count = mysqli_warning_count($con);
   print("Number of Warnings: ".$count ."\n");

   $sql = "INSERT IGNORE into emp values (15, 'Precious', 'Amah', DATE('1995-02-22'), 9986), (15, NULL, 'Paul', DATE('1990-11-25'), 9986)";
   mysqli_query($con, $sql);
   //Number of Warnings
   $count = mysqli_warning_count($con);
   print("Number of Warnings: ".$count);

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

Output

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

Number of Warnings: 1
Number of Warnings: 2

Example2

In an object oriented style the syntax of this function is $con->warning_count; Following is the example of this function in an object oriented style -

<?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(1, 'Kennedy', NULL, DATE('1993-04-05'), 2566)");
   //Number of Warnings
   $count1 = $con->warning_count;
   print("Number of Warnings: ".$count1."\n");

   //Inserting a record into the employee table
   $con -> query("INSERT IGNORE into emp values(15, 'Precious', 'Amah', DATE('1995-02-22'), 9986), (15, NULL, 'Paul', DATE('1990-11-25'), 9986)");
   //Number of Warnings
   $count2 = $con->warning_count;
   print("Number of Warnings: ".$count2);

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

Output

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

Number of Warnings: 0
Number of Warnings: 2

Example3

Following is another example of the PHP mysqli_warning_count() function.

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

   //Warning count for proper query
   mysqli_query($con, "SELECT * FROM EMP");
   print("No.Of Warnings (proper query): ".mysqli_warning_count($con)."\n");

   //Query to DROP an unknown table
   mysqli_query($con, "drop table if exists WrongTable");
   print("No.Of Warnings: ".mysqli_warning_count($con)."\n");

   //Warnings of before last statement
   mysqli_query($con, "INSERT IGNORE into emp values(107, 'Justice', NULL, DATE('1992-12-05'), 2566)");
   mysqli_query($con, "INSERT IGNORE into emp values(7, 'Stephanie', 'Francis', DATE('1997-12-05'), 2566)");
   print("No.Of Warnings (if before last query contains errors): ".mysqli_warning_count($con)."\n");

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

Output

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

Insert ID (select query): 0
Insert ID: (multiple inserts) 6
Insert ID (update query): 0
Insert ID: (table with out auto incremented key) 0

Example4

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);
   $warnings = mysqli_warning_count($conn);
   print("No.Of warnings in the query:".$warnings."\n");

   if ($warnings) {
      if ($result = mysqli_query($conn, "SHOW WARNINGS")) {
         $row = mysqli_fetch_row($result);
         printf("%s (%d): %s\n", $row[0], $row[1], $row[2]);
         mysqli_free_result($result);
      }
   }

   mysqli_close($conn);
?>

Output

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

Database connected
No.Of warnings in the query:1
Warning (1265): Data truncated for column 'Name' at row 1


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 mysqli_data_seek() Function in PHP.

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.