Как получить куку id пользователя при авторизации через nick. [php, mvc]

никак не могу получить id пользователя после авторизации. Подскажите пожалуйста как организовать метод получения $id через $nick

Контроллер Главной страницы

// Контроллер главной страницы
    public function actionIndex()
    {

        $nick = '';
        $password = '';
// Если данные существуют, то присваиваем переменные 
        if (isset($_POST['enter'])) {
            $nick = $_POST['nick'];
            $password = $_POST['password'];
// Если поле ник не пустое значение, то проверяем ник в БД
            if ($nick != '') {
// Проверяем существует ли пользователь в БД
                if (User::checkNickExist($nick))
                {
// Если логин и пароль совпадают, то авторизуем
                    if (User::checkUserData($nick, $password))
                    {
// Дополнительно создан метод User::auth, в нем идет запись куки $nick и выставление статуса ON - онлайн
// В методе User::aut я хочу получить куку $id через  $nick
                        User::auth($nick);
// Переадресация на Контроллер EnterController
                        header("Location: /enter");
                        exit;
                    }
                    else
                        {
                            // Если пароль неверный
                            require_once(ROOT . '/views/index/wrong_password.php');
                            return true;
                        }
                }
                else
                {
                    // Если пользователь не найден в базе
                    require_once(ROOT . '/views/index/not_such_user.php');
                    return true;
                }

            }
            else
            {
                // Если поля не заполнены или поле псевдоним не заполнено
                require_once(ROOT . '/views/index/no_data.php');
                return true;
            }
        }

// ПРОШУ НЕ ОБРАЩАТЬ ВНИМАНИЕ НА ТАКУЮ ШАБЛОНИЗАЦИЮ, ТАКАЯ ЗАДАЧА

        // Главная страница
        require_once(ROOT . '/views/index/index.php');

        return true;
    }

вот метод User::auth

// Записываем сессию пользователю и куку с ником. Это необходимо для последующей записи статуса OFF в таблицу при выходе в контроллере IndexController = IndexOut
    public static function auth($nick){

        $_SESSION['$nick'] = $nick;
        setcookie("nick", $nick);

        // Записываем статус ON пользователю
        $db = Db::getConnection();

        $sql = 'UPDATE users SET online = "ON" WHERE nick = :nick';
        $result = $db->prepare($sql);
        $result->bindParam(':nick', $nick, PDO::PARAM_STR);
        $result->execute();
        $result->fetchColumn();


// ВОТ ТУТ НАЧИНАЮТСЯ ПРОБЛЕМЫ, НИКАК НЕ МОГУ ПОЛУЧИТЬ $id
        $db = Db::getConnection();
        $result2 = $db->query('SELECT id FROM users WHERE nick = $nick');
// Если пробую выгрузить массив через fetch, то неизбежно сталкиваюсь с фатальной ошибкой после авторизации
// Любые действия с fetch приводят к фатальной ошибке, так же пробовал выносить все в отдельный метод
// Fatal error: Uncaught Error: Call to a member function fetch() on bool in

        setcookie("id", $result2['id']);

    }

Ответы (1 шт):

Автор решения: Евгений Тихии

Пробуй так)

public static function auth ($nick) {

/**
 * Sessions, cookies
 */
$_SESSION['$nick'] = $nick;
setcookie("nick", $nick);

/**
 * \PDO holder
 */
$db = Db::getConnection();

/**
 * SQLs
 */
$sqlUpdate = "UPDATE users SET online = 'ON' WHERE nick = :nick";
$sqlSelect = "SELECT id FROM users WHERE nick = :nick";

/**
 * Exec
 */
$queryUpdate = $db->prepare($sqlUpdate);
$queryUpdate->bindParam(':nick', $_SESSION['$nick'], \PDO::PARAM_STR);
$queryUpdate->execute();


$querySelect = $db->prepare($sqlSelect);
$querySelect->bindParam(':nick', $_SESSION['$nick'], \PDO::PARAM_STR);
$querySelect->execute();
$resultSelect = $querySelect->fetch(\PDO::FETCH_ASSOC);

setcookie("id", $resultSelect['id']);

}

→ Ссылка