I have a function for creating unique slug for a page title. It checks if the slug is available in the pages table then creates a unique slug by adding a '-int' accordingly. The function works fine for the first three entries eg for 'test slug' entered three time will create 'test-slug-1', 'test-slug-2' and 'test-slug-3'. Then after that I get an error "Fatal error: Maximum execution time of 30 seconds exceeded" for the fourth entry. There should be some problem with the logic, can anyone help me find it please.Below is the code:
function createSlug($title, $table_name, $field_name) { global $db_connect; $slug = preg_replace("/-$/","",preg_replace('/[^a-z0-9]+/i', "-", strtolower($title))); $counter = 1; do{ $query = "SELECT * FROM $table_name WHERE $field_name = '".$slug."'"; $result = mysqli_query($db_connect, $query) or die(mysqli_error($db_connect)); if(mysqli_num_rows($result) > 0){ $count = strrchr($slug , "-"); $count = str_replace("-", "", $count); if($count > 0){ $length = count($count) + 1; $newSlug = str_replace(strrchr($slug , "-"), '',$slug); $slug = $newSlug.'-'.$length; $count++; }else{ $slug = $slug.'-'.$counter; } } $counter++; $row = mysqli_fetch_assoc($result); }while(mysqli_num_rows($result) > 0); return $slug; }