| 
										 
											
												| 
														Types of Error Handling in PDO
 
														By default, PDO uses the silent error handling mode. This means that any error 
														that arises when calling methods of the PDO or PDOStatement classes go 
														unreported. With this mode, one would have to call PDO::errorInfo(), 
														PDO::errorCode(), PDOStatement::errorInfo(), or PDOStatement::errorCode(), 
														every time an error occurred to see if it really did occur. Note that this mode 
														is similar to traditional database access—usually, the code calls mysql_errno() 
														and mysql_error() (or equivalent functions for other database systems) after 
														calling functions that could cause an error, after connecting to a database and 
														after issuing a query. Another mode is the warning mode. Here, PDO will act identical to the 
														traditional database access. Any error that happens during communication with 
														the database would raise an E_WARNING error. Depending on the confi guration, 
														an error message could be displayed or logged into a fi le.
													 Finally, PDO introduces a modern way of handling database connection errors—by 
														using exceptions. Every failed call to any of the PDO or PDOStatement methods 
														will throw an exception.
													 |   Chapter Contents
This excerpt from Chapter NO. 3 "Error Handling" from Learning 
															PHP Data Objects by Dennis Popel, is printed with permission 
														from Packt Publishing, Copyright 
														2007.
   |  
										
 
										 
											
												|  | As we have previously noted, PDO uses the silent mode, by default. To switch to 
														a desired error handling mode, we have to specify it by calling 
														PDO::setAttribute() method. Each of the error handling modes is specifi ed by 
														the following constants, which are defi ned in the PDO class:
													 PDO::ERRMODE_SILENT – the silent strategy.PDO::ERRMODE_WARNING – the warning strategy.
 PDO::ERRMODE_EXCEPTION – use exceptions.
 To set the desired error handling mode, we have to set the PDO::ATTR_ERRMODE 
														attribute in the following way:
														
 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 To see how PDO throws an exception, edit the common.inc.php fi le by adding the 
														above statement after the line #46. If you want to test what will happen when 
														PDO throws an exception, change the connection string to specify a nonexistent 
														database. Now point your browser to the books listing page.
													 |  You should see an output similar to:
 
 This is PHP's default reaction to uncaught exceptions—they are regarded as fatal 
										errors and program execution stops. The error message reveals the class of the 
										exception, PDOException, the error description, and some debug information, 
										including name and line number of the statement that threw the exception. Note 
										that if you want to test SQLite, specifying a non-existent database may not 
										work as the database will get created if it does not exist already. To see that 
										it does work for SQLite, change the $connStr variable on line 10 so that there 
										is an illegal character in the database name:  $connStr = 'sqlite:/path/to/pdo*.db'; Refresh your browser and you should see something like this: 
 As you can see, a message similar to the previous example is displayed, 
										specifying the cause and the location of the error in the source code. 
										
 Page 1 | page 
																2 | 
																page 3
 
										
											
												
													
														
													
												 |