which programmer to buy, receiving upload error

Almost any ICSP programmer will do the task.

Have at least 3 different one here and not had an issue with any of them.
Also useful to invest in a serial programmer and a JTAG programmer if you were to ask me as they all come in useful somewhere along the line if you want to play more with Arduino and other platforms.