Как перепрыгнуть часть кода (goto)?
Лучше научиться писать грамотный код, а не портянку которую вы тут воротите.
В вашем случае нужно узнать что такое MVC. Написать хоть какое то подобие валидаторов, которые возвращают или true или текст ошибки.
Сначала проверять через валидаторы все значения и возвращать сразу ошибки, если они есть. Если же нет, то строить запрос через форматирование или замену, а не через конкатенацию./**
  *@param Request $request
  */
  function my_action($request) 
  {
		$validator = ValidatorLength(3);
		$error = $validator->test($request->get('first_name'));
		if ($error !== true) {
			return new Response($error, 400);
		}

		$sql = 'SELECT * FROM "my_table" WHERE %condition %limit';
		$sql_condition = 'TRUE';
		$sql_limit = '';

		$and_conditions = [];
		if ($request->get('first_name')) {
			$and_conditions[] = sprintf('first_name LIKE \%%s', $request->get('first_name')); 
		}

		if ($request->get('limit')) {
			$sql_limit = sprintf('LIMIT %d', $request->get('limit'));			
		}

	  $sql_condition = implode(" AND ", $and_conditions);

		$sql = str_replace('%condition', $sql_condition, $sql);
		$sql = str_replace('%limit', $sql_limit, $sql);

		// ...

		return new Response("Hello world");
	}
Request, Response, ValidatorLength - это всё вымышленные классы.
То что вы пишите НИ В КОЕМ СЛУЧАЕ даже для теста делать нельзя. Такой код нужно выбрасывать.
Ну и да, лучше вместо замены в запросах, лучше использовать подготовленные запросы: 
https://php.net/manual/ru/pdo.prepared-statements.php
Используйте механизм блоков try-catch. Или еще лучше в данном случае оберните функционал в функцию и используйте return.