Для того, что бы сделать все первые буквы слов заглавными, надо применить функцию ucwords(), или ucfirst() если нужно сделать заглавной только первую букву в строке:
<?php
echo ucfirst($str); // первая буква строки в верхнем регистре
echo ucwords($str); // все первые буквы слов в верхнем регистре
?>
Если ucwords, или ucfirst не работают, но вы всё сделали правильно, то скорее всего дело в том, что вы используете кодировку utf-8.
Для того что бы перевести все первые буквы слов в верхний регистр в кодировке utf-8 надо использовать mb_convert_case():
<?php
echo mb_convert_case($row->name, MB_CASE_TITLE, 'utf-8'); // аналог ucwords
?>
У этого подхода есть небольшой минус: mb_convert_case($row->name, MB_CASE_TITLE, 'utf-8') сначала переводит всю строку в нижний регистр, и только потом первые буквы слов в верхний.
Для замены ucfirst можно использовать например такой велосипед:
<?php
echo mb_strtoupper(mb_substr($string, 0, 1, 'utf-8'), 'utf-8') . mb_substr($string, 1, mb_strlen($string), 'utf-8');
?>