循环时pdo的PHP错误

Hi I am trying to set a cache of the users information from the database using pdo with php, but it is throwing some errors

Code:

public function setUserCache($db)
    {
        if (!isset($_SESSION['user']['id']))
            exit();

        $statement = $db->prepare("SELECT * FROM users WHERE mail = :mail");
        $statement->execute(array(':mail' => $_SESSION['user']['username']));
        $userData = $statement->fetch(PDO::FETCH_ASSOC);


        $statement = $db->prepare("SELECT * FROM data WHERE id = :id");
        $statement->execute(array(':id' => $userData['id']));
        $roleplayDate = $statement->fetch(PDO::FETCH_ASSOC);

        while (list($var, $val) = each($userData)) {
            $_SESSION['user'][$var] = $val;
        }

        while (list($var, $val) = each($roleplayDate[0])) {
            $_SESSION['user'][$var] = $val;
        }
    }

The error:

E_WARNING Error in file »class.user.php« at line 101: Variable passed to each() is not an array or object

Line 101:

while (list($var, $val) = each($roleplayDate[0])) {

The error happens on BOTH while loops.