Necesitas usar bindValue , no bindParam
bindParam toma una variable por referencia y no extrae un valor en el momento de llamar a bindParam . Encontré esto en un comentario en los documentos de PHP:
bindValue(':param', null, PDO::PARAM_INT);
PD Puede tener la tentación de hacer esto bindValue(':param', null, PDO::PARAM_NULL); pero no funcionó para todos (gracias Will Shaver por informar).