Правильно ли составлена функция php, mysql?
Не совсем понял что вы хотите выяснить, просто запустите код. Так что просто пару советов:
1) global $link; - старайтесь не использовать глобальные состояния. Коль уж пишите процедурный код - пусть он будет по настоящему процедурным:function show_banner($kolvo, $link) {
2) старайтесь не делать вывод в функции которая у вас берет данные из базы - пусть она возвращает только данные (либо ничего в случае ошибки) а за вывод пусть отвечает другая функция.$banners = get_banners($count, $link);
show_banners($banners);
Используйте PDO. 
Вот Вам на заметку. Думаю разберётесь сами что с этим делать.//-------------------------- Класс работы с базой ----------------------------//
class DBPDO {
   // Используем статическую переменную для сохранения значений внутри класса
	static private $database = NULL;
	
	// Конструктор выполняет соединение с БД возращает объект БД или false
	private function __construct(){
		try {
   		// Сразу задаём кодировку соединения
			self::$database = new PDO('mysql:host=localhost; dbname=basename', 'user', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
   		// Устанавливаем уровень показа ошибок базы
   		self::$database->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		} catch (PDOException $e){
			$error = $e->getMessage();
     		writelog('sql_error', date("y.m.d H:m:s")."\t".$error);
   		return false;
		}
	}
	
	// Статическая функция синглтон для получения объекта ДБ
	static public function dbconnect() {
		if (self::$database == NULL) { new DBPDO(); }
		return self::$database;
	}
	
	// Функция выполнения запроса 
   static public function sql_query($query) {
   	try {
         $return = self::dbconnect()->query($query)->fetchAll(PDO::FETCH_ASSOC);
         if ($return === false) return false;
         if ((!isset($return[1]))&&(isset($return[0]))) $return = $return[0];
      } 
      catch (PDOException $e) { 
         $error = $e->getMessage();
     		writelog('sql_error', date("y.m.d H:m:s")."\t".$error);
   		return false;
      }

   	return $return;
   }	

   // Запрос без выборки
	static public function exec($query) {
      try { 
         return self::dbconnect()->exec($query);
      } 
      catch (PDOException $e) { 
         $error = $e->getMessage();
     		writelog('sql_error', date("y.m.d H:m:s")."\t".$error);
   		return false;
      }
	}
	
   // Экранирование спецсимволов
	static public function quote($str) {
      return self::dbconnect()->quote($str);
	}

	// Получение id последней изменённой строки
	static public function lastInsertId() {
      return self::dbconnect()->lastInsertId();
	}
}
//----------------------------------------------------------------------------//