Error Handling In PHP

Error handling in PHP is a fairly straightforward process. PHP will simply send to the browser (or standard output if executing a script from the command line).* an error message containing relative information to the error such as the filename of the script, the specific line in the file that caused the error,
* a (sometimes) helpful message describing the nature of the error

The default error handling in PHP is very simple. An error message with filename, line number and a message describing the error is sent to the browser

 
Database functions can fail. There are several possible classes of failure, ranging from critical-the DBMS is inaccessible or a fixed parameter is incorrect to recoverable, such as a password being entered incorrectly by the user.
 
The PHP interface functions to MySQL support two error-handling functions for detecting and reporting errors:
 
int mysql_errno(resource connection)

Returns the error number of the last error on the connection resource string

mysql_error(resource connection)

Returns a descriptive string of the last error on the connection resource

 
Example below shows a script illustrated with additional error handling. We have deliberately included an error where the name of the database test is misspelled as “test_tbl”.
 
The error handler is a function, showError( ), that-with the database name error-prints a phrase in the format:
 
Error 1049 : Unknown database ‘test_tbl’
 
The error message shows both the numeric output of mysql_errorno( ) and the string output of mysql_error( ). The die( ) function outputs the message and then gracefully ends the script.
 
Warning:

The functions mysql_query( ) and mysql_unbuffered_query( ) return false only on failure; that is, when a query is incorrectly formed and can’t be executed.

 
A query that executes but returns no results still returns a result resource handle. However, a successive call to mysql_num_rows( ) reports no rows in the result set.
 
The mysql_connect( ) and mysql_pconnect( ) functions don’t set either the error number or error string on failure and so must be handled manually. This routine handling can be implemented with a die( ) function call and an suitable text message, as in Example below.
 
Example Querying a database with error handling
 
<html>
<head>
  <title>PHP Tutorial: Working With MySQL</title>
</head>
<body><pre>
<?php

   function showError(  )
   {
      die("Error " . mysql_errno(  ) . " : " . mysql_error(  ));
   }

   // (1) Open a  connection to the database
   if (!($connection = @ mysql_connect("localhost",
                                       "roor","")))
      die("Could not connect");

   // NOTE : 'test' is deliberately misspelt to
   // cause an error
   if (!(mysql_select_db("test", $connection)))
      showError(  );

   // (2) Execute a  query on the test through the  connection

   if (!($result = @ mysql_query ("SELECT * FROM test_tbl",
                                   $connection)))
      showError(  );

   // (3) While there are still rows in the result set,
   // fetch the current row into the array $row
   while ($row = mysql_fetch_row($result))
   {
      // (4) Print out each element in $row, that is,
     // print the values of the attributes
      for ($i=0; $i<mysql_num_fields($result); $i++)
         echo $row[$i] . " ";

      // Print a carriage return to neaten the output
      echo "\n";
   }
   // (5) Close the database connection
   if (!mysql_close($connection))
      showError(  );
?>
</pre>
</body>
</html>
 
The MySQL error-handling functions should be used with the @ operator that suppresses default output of error messages by the PHP script engine. Omitting the @ operator produces messages that contain both the custom error message and the default error message produced by PHP. Consider an example where the string localhost is misspelled, and the @ operator is omitted:
 
if (!($connection = mysql_connect(“localhos”, “root”,:””) )) die(“Could not connect”);

Warning: MySQL Connection Failed:

Unknown MySQL Server Host ‘localhos’ (0) in error-handling.php on line 42 Could not connect

 
TIPS: Don’t forget to add an @ operator as the prefix to any function call that is handled manually with a custom error handler. The @ operator prevents PHP from issuing its own internal error message.
 
Assignment:
 
1. In the sub-section MySQL DML command of this chapter, there are two dummy functions [update_record, delete_record] to implement update and delete operations respectively. Implement SQL Update and delete commands using the functions.
 
2. Write a PHP function to return list of databases as a drop-down list, i.e.
 
 
3. Write a PHP script to generate the following output:
 
img
 
in the above script, there is a drop down list that contain name of all databases in MySQL.
 
This Example work like this, when user select database name from drop-down list, enter desired table name in the text box and press Show Records button it should display the record in show format.
 
4. Implement simple login using PHP-MySQL, the login page should look like, the one given below:
 
img
 
Create All necessary tables in MySQL and use JavaScript to ensure that form is not submitted when any of both fields are empty. Display appropriate Login Success/Login Failed message.
 
Scroll to Top