Посмотрите про
область видимости переменных в PHP.
В том виде, как вы записали,
global
сработает вне зависимости от выполнения условия. Если очень хочется именно по условию, разместите строку с global в отдельном файле и включаейте его по условию:
if( $link) {
include("my_global.php");
}
Но по-хорошему, вам надо весь ваш код обернуть в один класс, $link сделать его свойством, а в функции, в случае удачи определения внутренней переменной $_link, передавать значение свойству:
if( ...){
$this->link = $_link;
}