Q:

Switched from mysql_ to PDO, login script no longer working

I replaced my mediocre mysql_* query system with PDO.  However, my login script stopped working.  It has to be a problem with fetching data, since my username passes, but my password does not. 
CODE:
<? php
session_start();
include('config.php');
include('cipher.php');
$usercheck = $_POST["email"];
$passcheck = $_POST["pass"];
$stmt      = $pdo->prepare('SELECT * FROM users WHERE email = :usercheck');
$stmt->execute(array(
    ':usercheck' => $usercheck
));
$num = $stmt->rowCount();
if ($num == 1) {
    $bcrypt = new Bcrypt(15);
    $record = $stmt->fetchAll();
    $hash   = $record['password'];
    $isGood = $bcrypt->verify($passcheck, $hash);
    if ($isGood == 1) {
        $_SESSION['fname']     = $record['firstname'];
        $_SESSION['lname']     = $record['lastname'];
        $_SESSION['email']     = $record['email'];
        $_SESSION['user']      = $record['email'];
        $_SESSION['uid']       = $record['uid'];
        $_SESSION['birthday']  = $record['birthday'];
        $_SESSION['type']      = $record['pagetype'];
        $_SESSION['backcolor'] = $record['backcolor'];
        $_SESSION['barcolor']  = $record['barcolor'];
        $_SESSION['activated'] = $record['activated'];
        if ($_SESSION['activated'] == 0) {
            $_SESSION['newemail'] = $record['email'];
            unset($_SESSION['fname']);
            unset($_SESSION['lname']);
            unset($_SESSION['email']);
            unset($_SESSION['user']);
            unset($_SESSION['uid']);
            unset($_SESSION['birthday']);
            unset($_SESSION['type']);
            unset($_SESSION['backcolor']);
            unset($_SESSION['barcolor']);
            header('Location: mustactivate.php');
        } else {
            if ($_SESSION['type'] == 1) {
                header('Location: profile.php');
            } else {
                if ($_SESSION['type'] == 2) {
                    header('Location: mypage.php');
                } else {
                    header('Location: setup.php');
                }
            }
        }
    } else
        header('Location: login.php?error=badpass');
} else
    header('Location: login.php?error=bademail');
? >

A:

$record = $stmt->fetchAll();
$hash   = $record['password'];

The fetchAll() method returns an array of rows.  So there will not be any $record['password']. 
Try var_dump($record) to show yourself what's in that variable. 
To fix this, you could use $record[0]['password'].  Or else you could fetch it with $stmt->fetch() if you just need one row.