PHP connect_error and mysqli_connect_error()

This article is created to cover the two topics of PHP, that are:

Both returns error description (if any) from the last connection. The only difference is, the connect_error uses with PHP MySQLi object-oriented script, whereas the mysqli_connect_error() uses with PHP MySQLi procedural script.

PHP connect_error

The PHP connect_error is used when we need to get and print the error description raised by last connection error, while using PHP MySQLi object-oriented script to connect to the database. For example:

<?php
   $server = "localhost";
   $user = "unknown";
   $password = "";
   $database = "fresherearth";
   
   $conn = new mysqli($server, $user, $password, $database);
   
   if($conn->connect_errno)
   {
      echo "Database connection failed: ", $conn->connect_error;
      exit();
   }
   $conn -> close();
?>

Since the user unknown is not available as user of my MySQL database server. Therefore the output produced by above example is:

php connect error

That is:

Fatal error: Uncaught mysqli_sql_exception: Access denied for user 'unknown'@'localhost' (using password: NO) in C:\xampp\htdocs\index.php:7 Stack trace: #0 C:\xampp\htdocs\index.php(7): mysqli->__construct('localhost', 'unknown', '', 'fresherearth') #1 {main} thrown in C:\xampp\htdocs\index.php on line 7

Now what I think is, you might expect the output, something like:

Database connection failed: ...... // i.e., followed by error description

Therefore, let me clear, the output you are watching, was produced by default. To hide/suppress those Fatal error, you need to turn off the error reporting, using the following two statements:

$driver = new mysqli_driver();
$driver -> report_mode = MYSQLI_REPORT_OFF;

That is, here is the modified version of above example:

<?php
   $driver = new mysqli_driver();
   $driver -> report_mode = MYSQLI_REPORT_OFF;
   
   $server = "localhost";
   $user = "unknown";
   $password = "";
   $database = "fresherearth";
   
   $conn = @new mysqli($server, $user, $password, $database);
   
   if($conn->connect_errno)
   {
      echo "Database connection failed: ", $conn->connect_error;
      exit();
   }
   // block of code to process further, on successful connection
   
   $conn -> close();
?>

Now the output should be:

php connect error example

Note - The @ before new is written to suppress the default error.

Note - The mysqli() is used to open a connection to the MySQL database server, in object-oriented style.

Note - The new keyword is used to create a new object.

Note - The connect_errno is used to get/return the error code (if any) from last connect call, in object-oriented style.

Note - The exit() is used to terminate the execution of the current PHP script.

Note - The close() is used to close an opened connection, in object-oriented style.

Note - The mysqli_driver() is used to modify the error reporting mode, in object-oriented style.

PHP mysqli_connect_error()

The PHP mysqli_connect_error() is used when we need to get and print the error description raised by last connection error, while using PHP MySQLi procedural script to connect to the database. For example:

<?php
   mysqli_report(MYSQLI_REPORT_OFF);
   
   $server = "localhost";
   $user = "unknown";
   $password = "";
   $database = "fresherearth";
   
   $conn = @mysqli_connect($server, $user, $password, $database);
   
   if(mysqli_connect_errno())
   {
      echo "Database connection failed: ", mysqli_connect_error();
      exit();
   }
   mysqli_close($conn);
?>

You will get the same output as of previous one, that is:

Database connection failed: Access denied for user 'unknown'@'localhost' (using password: NO)

Note - The mysqli_report() is used to modify the error reporting mode, in procedural style.

Note - The mysqli_connect() is used to open a connection to the MySQL database server, in procedural style.

Note - The mysqli_connect_errno() is used to get/return the error code (if any) from last connect call, in procedural style.

Note - The mysqli_close() is used to close an opened connection to the MySQL database, in procedural style.

PHP Online Test


« Previous Tutorial Next Tutorial »