cademichaels Posted January 24, 2014 Share Posted January 24, 2014 How would I properly handle a bad SQL string query? For example if the $table provided doesn't exist, the where expression is invalid, or the $field doesn't exist? function GetMax($field, $table, $WhereExpression) { $con = mysqli_connect(ServerHostName, ServerUser, ServerPass, ServerDB); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); exit(); } $q = "SELECT Max($field) AS MaxOfGetMax FROM $table WHERE $WhereExpression"; $rst = mysqli_query($con, $q); if ($rst=false){ if ($row = mysqli_fetch_array($rst)) { return $row["MaxOfGetMax"]; } return null; } } Quote Link to comment https://forums.phpfreaks.com/topic/285650-properly-handle-bad-sql/ Share on other sites More sharing options...
Barand Posted January 24, 2014 Share Posted January 24, 2014 Use the site's code tags or <> button in toolbar. The comparison operator is "==" and not "=" if (!$rst) { // handle the error eg die (mysqli_error($con)); } else { if ($row = mysqli_fetch_assoc($rst) { // process row } } Quote Link to comment https://forums.phpfreaks.com/topic/285650-properly-handle-bad-sql/#findComment-1466438 Share on other sites More sharing options...
Ch0cu3r Posted January 24, 2014 Share Posted January 24, 2014 (edited) When an error occurs mysqli_query will return false. You'd then use mysqli_error to get the error message from mysql. The specific error codes for an unknown table is 1146 and for columns it is 1054 List of MySQL error codes http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html Edited January 24, 2014 by Ch0cu3r Quote Link to comment https://forums.phpfreaks.com/topic/285650-properly-handle-bad-sql/#findComment-1466439 Share on other sites More sharing options...
objnoob Posted January 25, 2014 Share Posted January 25, 2014 Sorry, but not exit() nor die() be proper ways to handle errors when content-type: text/html Quote Link to comment https://forums.phpfreaks.com/topic/285650-properly-handle-bad-sql/#findComment-1466456 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.