According to the code you provided, $row['name']; is undefined because you are not selecting a name column in your query, only a highscore column. However there is no reason you should be getting incorrect scores, can you show data in your table and what you expect to get and what you are getting instead?
Note that this is working for me:
CREATE TABLE `scores` ( `player` varchar(16), `score` int(10) unsigned );
INSERT INTO `scores` (`player`,`score`) VALUES
('Dero',123),
('Dero',113),
('Dero',103),
('Dero',143),
('Brad',153),
('Brad',125),
('Brad',128),
('Brad',183),
('Weed',323),
('Weed',223),
('Weed',193),
('Weed',25);
SELECT `player`,`score` FROM `scores` ORDER BY `score` DESC LIMIT 5;
Returns:
player score
Weed 323
Weed 223
Weed 193
Brad 183
Brad 153
This is the expected result.