The mysqli_sql_exception class is not available to PHP 5.05I used this code to catch errors <?php$query = "SELECT XXname FROM customer_table ";$res = $mysqli->query($query);if (!$res) { printf("Errormessage: %s\n", $mysqli->error);}?>The problem with this is that valid values for $res are: a mysqli_result object , true or falseThis doesn't tell us that there has been an error with the sql used.If you pass an update statement, false is a valid result if the update fails.So, a better way is:<?php$query = "SELECT XXname FROM customer_table ";$res = $mysqli->query($query);if (!$mysqli->error) { printf("Errormessage: %s\n", $mysqli->error);}?>This would output something like:Unexpected PHP error [mysqli::query() [<a href='function.query'>function.query</a>]: (42S22/1054): Unknown column 'XXname' in 'field list'] severity [E_WARNING] in [G:\database.php] line [249]Very frustrating as I wanted to also catch the sql error and print out the stack trace. A better way is:<?phpmysqli_report(MYSQLI_REPORT_OFF); //Turn off irritating default messages$mysqli = new mysqli("localhost", "my_user", "my_password", "world");$query = "SELECT XXname FROM customer_table ";$res = $mysqli->query($query);if ($mysqli->error) { try { throw new Exception("MySQL error $mysqli->error <br> Query:<br> $query", $msqli->errno); } catch(Exception $e ) { echo "Error No: ".$e->getCode(). " - ". $e->getMessage() . "<br >"; echo nl2br($e->getTraceAsString()); }}//Do stuff with the result?>Prints out something like:Error No: 1054Unknown column 'XXname' in 'field list'Query: SELECT XXname FROM customer_table#0 G:\\database.php(251): database->dbError('Unknown column ...', 1054, 'getQuery()', 'SELECT XXname F...')#1 G:\data\WorkSites\1framework5\tests\dbtest.php(29): database->getString('SELECT XXname F...')#2 c:\PHP\includes\simpletest\runner.php(58): testOfDB->testGetVal()#3 c:\PHP\includes\simpletest\runner.php(96): SimpleInvoker->invoke('testGetVal')#4 c:\PHP\includes\simpletest\runner.php(125): SimpleInvokerDecorator->invoke('testGetVal')#5 c:\PHP\includes\simpletest\runner.php(183): SimpleErrorTrappingInvoker->invoke('testGetVal')#6 c:\PHP\includes\simpletest\simple_test.php(90): SimpleRunner->run()#7 c:\PHP\includes\simpletest\simple_test.php(498): SimpleTestCase->run(Object(HtmlReporter))#8 c:\PHP\includes\simpletest\simple_test.php(500): GroupTest->run(Object(HtmlReporter))#9 G:\all_tests.php(16): GroupTest->run(Object(HtmlReporter))This will actually print out the error, a stack trace and the offending sql statement. Much more helpful when the sql statement is generated somewhere else in the code.