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; } } 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 } } 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 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 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 Link to comment https://forums.phpfreaks.com/topic/285650-properly-handle-bad-sql/#findComment-1466456 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.