Можно написать
простую обертку для mysqli, которая будет брать на себя рутинные операции, если надо выполнить только один запрос.
$sql = "SELECT * FROM `forum_topic` WHERE id = ?";
$topic = mysqli($base, $sql, [$id])->get_result()->fetch_assoc();
$sql = "SELECT * FROM `profile` WHERE id = ?";
$profile = mysqli($base, $sql, [$topic['uid']])->get_result()->fetch_assoc();
Плюс, как водится, второй запрос здесь не нужен вообще, поскольку такие вещи делаются джойнами
$sql = "SELECT * FROM forum_topic, t profile p WHERE p.id=t.uid AND t.id = ?";
$topic = mysqli($base, $sql, [$id])->get_result()->fetch_assoc();
И в топике будет вся информация из профиля.
Если не нравится постоянно писать ->get_result()->fetch_assoc(), то можно эти операции записать в еще одну функцию
function mysqli_assoc($mysqli, $sql, $params) {
return mysqli($mysqli, $sql, $params)->get_result()->fetch_assoc();
}
А когда надоест разбираться с зоопарком из функций, то можно будет сделать свой класс, в котором собрать эту функциональность.
Только непонятно, почему в вопросе стоит тег PDO.