1° quando usi un'array e hai le chiavi "testuali" devi usare gli apici (singoli o doppi in base alle tue esigenze)

2° quando vuoi stampare il contenuto di un'array hai svariati modi, ovviamente devi usare quello che si avvicina di più alla tua situazione, ovvero:
- echo "<title>{$row['titolo']}</title>";
- echo "<title>{$row["titolo"]}</title>";
- echo "<title>$row[titolo]</title>";
- echo '<title>' . $row['titolo'] . '</title>';
- echo '<title>' . $row["titolo"] . '</title>';
- echo "<title>" . $row['titolo'] . "</title>";
- echo "<title>" . $row["titolo"] . "</title>";

La differenza tra apici doppi e non e che nelle stringhe racchiuse negli apici doppi puoi inserire variabili e caratteri speciali mentre in negli apici singoli no, ovvero:
"ciao {$nome}" -> si ... 'ciao {$nome}' -> no
"ciao\ndaniele_dll" -> si ... 'ciao\ndaniele_dll' -> no

nel tuo caso specifico
echo "$row[titolo]";

è perfettamente inutile dato che devi stampare solo il contenuto

inoltre, per fare controlli, fatti stampare TUTTO a video, ovvero fai un bel

echo '<pre>' . print_r($row, true) . '</pre>';

subito prima di questa riga