Você precisa usar
bindValue , não bindParam bindParam recebe uma variável por referência e não obtém um valor no momento da chamada de bindParam . Eu encontrei isso em um comentário nos documentos do PHP:bindValue(':param', null, PDO::PARAM_INT);
P.S. Você pode ficar tentado a fazer isso
bindValue(':param', null, PDO::PARAM_NULL); mas não funcionou para todos (obrigado Will Shaver por relatar.)